免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: zhangsuozhu
打印 上一主题 下一主题

今天看到一家公司的源代码,我疯了! [复制链接]

论坛徽章:
0
21 [报告]
发表于 2010-11-13 11:24 |只看该作者
回复 1# zhangsuozhu


    不奇怪,这类代码见多了。。。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
22 [报告]
发表于 2010-11-13 11:58 |只看该作者
回复 20# 狗气球

我先关注的也是这个, 第1反应就是overflow。
看呀看, 发现根本没有格式化参数的嘛!

sprintf(query, "%s", "select xxx,xxx,xxx form xxx");
那就是
strcpy(query, "select xxx,xxx,xxx form xxx");



char query[129] = {0};
memset(query, sizeof(query),  0);
sprintf(query, "%s", "select xxx,xxx,xxx form xxx");
那就是
char query[] = "select xxx,xxx,xxx form xxx";



char query[129] = {0};
memset(query, sizeof(query),  0);
sprintf(query, "%s", "select xxx,xxx,xxx form xxx");
sql_query(query);
那就是
sql_query("select xxx,xxx,xxx form xxx");
—— 如果sql_query的api设计不是渣。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
23 [报告]
发表于 2010-11-13 12:04 |只看该作者
回复 1# zhangsuozhu

lz蛋定。

我见过不少人, 把opencv或者ogre什么的下载下来, 直接就在它们提供的sample上改。
不会自己建一个工程, 不会搞include目录设置, lib目录设置, lib的引用。
甚至将代码合理的拆分到多个翻译单元都不会。

别人追求的, 也只是最终和那个sample有点不同, 自己对那个sample有点"改进"就行了。

见多了, 就习惯了……


退一万步……  这代码至少没bug……

论坛徽章:
0
24 [报告]
发表于 2010-11-13 13:19 |只看该作者
除了memset的后两个参数反了,其他的都没什么啊。

char *sqlStr = "select * from tb1";

char sqlStr[1024+1];
memset(sqlStr, 0, sizeof sqlStr);
sprintf(sqlStr, "select * from tb1");

这两者有什么实质性的区别?第二种情况的代码大多不是原来就这样的,很可能是从原来的老代码修改成现在这个样子的。

我这几天刚好也碰到这类事情,我认为这种细枝末节的东西不用太纠结,而应该着眼于大处。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
25 [报告]
发表于 2010-11-13 13:23 |只看该作者
回复 24# logicBaby


    一屋不扫,何以扫天下

论坛徽章:
0
26 [报告]
发表于 2010-11-13 14:11 |只看该作者
他们只管结果正确
hellioncu 发表于 2010-11-12 22:55


你说错了,不论代码怎么乱,只要结果正确,就是最好的代码。
尤其是一个稍大的系统,有时候无论怎么调,结果就是不对:(
能用规范的代码,写出一个正确的系统,CMM5不好说,CMM3,4肯定没问题了。

论坛徽章:
0
27 [报告]
发表于 2010-11-13 14:22 |只看该作者
你说错了,不论代码怎么乱,只要结果正确,就是最好的代码。
尤其是一个稍大的系统,有时候无论怎么调 ...
SuperZ 发表于 2010-11-13 14:11



    你不能这样……{:3_189:}

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
28 [报告]
发表于 2010-11-13 15:45 |只看该作者
你说错了,不论代码怎么乱,只要结果正确,就是最好的代码。
尤其是一个稍大的系统,有时候无论怎么调 ...
SuperZ 发表于 2010-11-13 14:11



    结果正确,但有重重陷阱的代码是好代码?哪天稍微动点地方都可能触发bug。

论坛徽章:
0
29 [报告]
发表于 2010-11-13 17:35 |只看该作者
不错了,最起码人家没按照 free(p) 之后再 p=NULL 的精神,
把 query 再 memset 一遍。
flw 发表于 2010-11-13 10:41


free(p);
p = NULL;

怎么了?

论坛徽章:
0
30 [报告]
发表于 2010-11-13 17:46 |只看该作者
不错了,最起码人家没按照 free(p) 之后再 p = NULL 的精神,
把 query 再 memset 一遍。
//
这两种行为能相提并论吗,  看你说话的语气好像是在 讥讽 free(p) 之后再 p = NULL 这种做法 。/
你记忆力很强吗, 哪个指针释放了, 哪个没释放你记的很清楚吗?
如果用了一个释放了的指针没有及时报错怎么办呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP