一、程序本身语义上的BUG。运行时BUG。
二、需求理解方面的差异导致的BUG。简单说,就是程序本身语义没有问题,但是程序实现的需求和客户要求的需求不吻合。
三、可降级的BUG。即这类BUG不会影响到程序的主流程。主要是客户体验类的问题。
解决方法:
一、规范需求。对可能出现的客户体验类的开发效果事前做出明确的说明。
二、透彻理解需求+全面集成测试。
三、开发人员开发流程控制,单元测试。
以上第一、第二做到后(因为这是前提),我们再看第三点。(一般开发的时候,第一、第二是比较难做到的,这里我们假设已经做到)
写代码时减少bug的八种方式
1.对模块进行单元测试或集成测试:遵循测试-代码-测试的原理,写一些成功或失败的案例帮助你识别函数所有可能的输入和代码相应的处理。
2.使用工具:在java中使用 Findbugs来静态分析代码找出bug。 在Ruby应用程序中 GetExceptional 能追踪所有的错误,然后将错误输出来。Selenium 能很轻松的在不同的浏览器中帮助你检查网页元素是在正确的位置上。使用这些工具非常的爽,能使你工作非常轻松。
3.编译器警告:不要忽视编译器的警告。它能很容易帮你识别代码中的bug。在调试你代码之前,使用最高级别的警告来编译你的代码,查看是否存在明显地错误。
4.代码审查:在将代码提交到正式的环境中之前,让你的同事帮你审查一下你写的代码。代码审查是在其他人的代码中找出错误的一种挑战。
5.日志:日志工具像log4j安装非常方便的。它可以将日志分为三种类型:error, warning和info来记录代码的大量操作。通过日志很容易追踪到发生了什么。
6.使用现有的库:不要去造轮子。如果已经存在了经过测试的非常好的代码库,而且你又计划实现这个代码库的同样的功能,那就使用这些代码吧。这个代码库已经被很多开发人员使用过,而且它应该是经过无数次的测试的。
7.伪代码:在开始编写模块代码之前,写一些伪代码是非常好的方法。
8.避免分心:分心是缺陷代码的头号敌人。一个GTalk或者Twitter都会打断你的思路。使用类似Pomodoro的技术和类似RescueTime的工具来集中你的注意力。