作为一个代码民工,不管你用什么语言,调试总是不可避免的。
有效的调试可以帮您提高代码的质量,缩短查找错误的时间,而且会减少引入错误的几率。
从某种意义上说,调试的技巧甚至比算法的技巧还要宝贵,至少毫不逊色。毕竟,当今社会需要你去发现一个算法,哪怕是实现一个算法的机会并不多,大多数时候只需要遵守已有的步骤,一步一步的完成即可。
但是企业在招聘的时候,往往折服于能在5分钟内写出一个算法的能力,而忽略应聘者能在5分钟内找到一个算法的错误的能力。这实际上是不值得提倡的。
这个扯远了,本文简要总结代码大全第23章,调试,的内容。这些调试的技巧很是实用:
- 首先要从代码的缺陷中学习,理解程序,明确你犯了哪种类型的错误,审视自己解决问题的办法,审视自己修正缺陷的方法,代码对别的阅读者友好吗;
- 应该避免这些调试方法:随意加print,猜测缺陷出现的位置;不愿意去理解问题,用最简单的方式修改错误;
- 科学的调试方法是这样的:
- 稳定重现,在关键位置打印变量,收集数据;
- 构建假说,确定一些可能重现错误的输入;
- 设计试验来证明或反证假说,试验最好简单,易于操作;
- 重复上述步骤,知道你对所有输入预测的结果跟实际结果吻合。
- 调试方法中有用的技巧,把所有的可能写在本子上,缩小嫌疑代码的范围,对最近的修改保持警惕;
- 修正错误的技巧:先理解问题,验证对错误的修改,不要在紧张的状态下修改,一次只改动一个错误,搜索类似的缺陷;
- 克服调试的心理陷阱,人往往被自己欺骗,而忽略了重要的东西,一方面忽略与错误无关的代码有助于快速的找到错误,但也意味着另一个可能的结果。在编程时候,采用清晰的代码,明确的注释有助于减少这些心理因素的影响。
- 最后,有效的利用工具,注意其报告的信息,也有助于更好的发现错误。