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