第四周读书笔记

《调试九法》读后感 三

这是第三周《调试九法》的阅读,这也是这本书最后的部分,花了三周时间阅读关于调试的书的原因是我个人格外重视调试这个步骤,我甚至认为在确定了算法思路步骤,完成了需求分析后,代码的编写的重要性也是不如调试的。而在除软件工程外的其他工程类项目中(如电路设计),调试的重要性只会更高。

When you eliminated all the impossible,whatever remains, however improbable, must be the truth. —— Sherlock Holmes   ”

在了解了上周的调试技巧之后,如制造失败之后,我们拥有了调试的一大利器,由于能不断制造失败,我们能够持续观察失败时反馈给我们的记录,这让我们能够一次次的分析产生错误的原因。

类比查找错误的过程为编程时的查找过程,从头到尾一次次的搜索产生错误之处,在数据量小的时候,这样的方法也许能行,但是在数据量稍大一些,并且数据结构选择不合适的时候,时间复杂度很可能达到O(N)、O(N^2),甚至更高。

而分而治之,则类似二分法的查找,能够大大减少查找错误时的废操作,将问题分为好的一半和坏的一半,然后研究坏的一半,并不断重复这个步骤,缩小搜索范围。

在发现了错误后,处理的技巧也十分重要,这本书读的越多之后,看到书中的调试案例,越感觉到各个工程里,调试的大同小异。

第七章中第一小节的标题形象生动“使用步枪,而不要用散弹枪”,一次只改一个地方,才能更好的修复BUG,修理电路板时一次更换几个元件,调试程序时,一次修改几个函数,有时可能会解决这个问题,却并不能确定是如何解决了这个问题,更多的情况下,甚至并没有解决这个问题,还有可能破坏正常的元件,产生新的问题。

个人感觉,调试更像是一个非常精细的修补过程,需要精准的修复,而不能只求测试结果的正确,改变了大量的函数,在某一次,某几次,某情况下的测试中获得正确的结果。这并不能证明调试过程已经完成。

正如书中所说的“你不修复BUG,它将依然存在” ,在结果向的调试中,你没有定位的BUG的话,结果的正确并不能表示BUG的修复,调试的过程,应该是一个发现BUG解决BUG的过程,结果的正确,更像是解决BUG后的副产品。

posted @ 2018-03-29 12:04  啥名字都不让取  阅读(149)  评论(1编辑  收藏  举报