博客园  :: 首页  :: 新随笔  :: 订阅 订阅  :: 管理

曾经犯过的错误

Posted on 2012-02-22 23:42  扬名  阅读(205)  评论(0编辑  收藏  举报

1.写程序中碰到棘手的问题时,直接原因很可能是程序架构的思路就有问题,但总会不自觉的用自己擅长的领域(如数学)去弥补较弱的知识(如架构),导致编出的程序可能比较难以理解,即便用了巧技怪术解决了问题,一般来说也并不可取,长期来说会限制自身的程序架构能力,也许回头重新思考,会有更好的解决方案。

2.除0操作,一定要验证分母是否等于0。其中有一种情况比较特殊,就是当分母包含随机数时,分母并不一定为0,当凑巧为0时可能会出现莫名其妙的bug,此时找bug难度大大增加,毕竟可以重现的bug都较为容易解决,还是得养成良好的编程习惯。

3.注意:网络程序断线后如果程序没重连功能的话,会完全失去程序作用,和关掉没什么两样。但在任务管理器中是看不出什么异样的,显示还是正在进行。断线的情况往往被忽视,很多看起来很奇怪的bug就是由此引起的

4.对键盘的拦截处理:PreTranslateMessage 是MFC相关的,在MFC项目中也可能不会进入该函数,但是键盘钩子是肯定能被触发的。

5.

(int &)tmp = 1; // true
(int)tmp = 1;// false

 6.

for(size_t i = 100; i >= 0; --i)  // 小心这是死循环,因size_t是unsigned int,通常为消除编译器警告(有无符号整形)时出现

 7.  内存泄露的检测:Visual Leak Detector (code project上去搜)

   资源泄露的检测:GDIView

   暴力调试: DbgView