打印

关于编程经常遇到的问题

[复制链接]
1078|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sinadz|  楼主 | 2012-5-30 19:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
工作几年了,算不上码农,总是在解bug,谈谈经常遇到的问题
1) 数据类型混用。 这个问题由来已久,大家可能都知道,但是实际工作中不注意,经常转换出错,最多的是int 被转换成unsigned int或者unsigned 变换成int, 造成的错误很难检查出来,编译时最多是个警告,很多编译器警告也没有。最基本的东西往往需要牢记,并且多看看些历史的失败经验教训,那样才会有深刻的体会!
2)返回值检查不充分。 返回值有很多种可能,很少人会每个都处理,基本就是两个:成功或者不成功,甚至很多时候连返回值都不判断,直接调用,理所当然认为不会失败,结果问题会很绕,往往出错的地方离触发点很远,调试很辛苦啊!另外C++中还有个讨厌的异常处理,很多人不关心,有些则因为编译器的问题对异常类(模板)的继承与重载处理不好,出了问题都让人抓狂。
3)边界条件处理不当。 这个最难处理,因为很多时候设计者为了简单,往往不会考虑太多,程序运行的结果像是飞船进入了异度时空,而且很多时候往往很久才能发现,最重要问题还不是这个,相比较前两个这个最难的是修改,因为原来设计者都没有考虑,你必须完全理解原始设计者的思想才能比较好地解决。最简单的例子就是 for循环(i=0; i <=100; i++)中的 i < 100 还是 i <= 100, 如果没有注释鬼才知道他要100次还是101次呢。
基本上通用的就三点,另外我做嵌入式,有些特殊的方面要特别注意
1)效率,嵌入式程序的CPU占用率不能太高,否则系统随时崩溃,所以在大数据量的循环嵌套,查找替换等等需要好的算法,另外很多时候一个简单的语句如果被重复调用很多次,那么这个简单语句就不能简简单单的了!很多时候需要实际测试来决定。
2)内存,能少用就少用,很多时候内存耗费在你根本想不到的地方,有时开个大块内存(4k)就失败,所以内存泄漏是非常严重的问题,毕竟嵌入式系统的内存太少了。。。另外栈的使用也要注意,很多函数形参最好能用引用就用引用,不能用引用用指针,否则堆栈很快满了,运行效率大大地低啊!

相关帖子

沙发
gxgclg| | 2012-5-30 19:12 | 只看该作者
第一个问题很好处理 把所有警告都当作错误来处理 这是个好习惯

使用特权

评论回复
板凳
dfsa| | 2012-5-30 19:24 | 只看该作者
多一少一”问题占程序员常犯错误的10%以上!

printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。

使用特权

评论回复
地板
无冕之王| | 2012-5-30 19:26 | 只看该作者
LZ总结的很好

使用特权

评论回复
5
zb0830| | 2012-5-31 21:36 | 只看该作者
总结的很好,学习了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

304

主题

2313

帖子

0

粉丝