这本书让我看到了很多资深程序员的思维,意识到了自己的差距。我一直以来都是实践能力不足,像书中提到的很多点我知道或了解但因为实践不足而忘却或不重视,日常的编程也没有一个良好的习惯。这本书就好像是一个老者向入门的人分享经验,我了解到代码中自动化的重要性,可以自己编写自动化工具,要避免重复(这个在我的代码中经常出现),要不断学习新技术,要重视文本,要敢于对自己的代码负责为它署名。值得一看和多看吧。
一些笔记:
调试&定位Bug的方法或指引:
- 调整好心态,不要恐慌,冷静的大脑能帮助你更快找出bug,要关注问题的根源所在
- 使用好“橡皮鸭”,通过向“别人”解释代码的方法,去找到哪些编程过程中想当然而不够明确的部分,重新思考和必须进行的详细陈述可以帮助你提升理解
- 不要想当然地将过错推给OS、编译器或者第三方产品,第一想法应该是消除自身代码中的bug。明确这部分的问题解决之后,再将视线转到第三方产品
- “只改动一样东西”之后而导致的bug,那么这就是问题所在
- 二分查找方法寻找bug,直到确定问题所在
- 重新评估你确信不疑的“事实”,不要假定,要证明,你所认为不可能出错的地方也有可能引起bug的原因
异常:
- 在对每一个错误进行检查时可能会导致代码逻辑的混乱,使用异常语法(try,catch),把错误处理集中在一起,是比较好的方法
- 对于可能发生错误的地方一定不能混为异常,例如某个需要打开指定文件的方法,可以先检查文件地址的准确性(这时因文件不存在产生的错误,应该作为正常的错误返回),然后再是异常处理。(把异常做正常处理的一部分的程序,存在可读性和渴望刷卡差的问题,会破坏封装)
函数的得墨忒尔法则:
某个对象的任何方法都应该只调用属于以下情形的方法:
- 它自身
- 传入该方法的任何参数
- 它创建的任何对象
- 任何直接持有的组件对象
有利于提升代码的适应性和健壮性,代价:需要编写大量包装方法,增加运行时间和空间开销。