代码大全(Code Complete 2)读书笔记
Contents
- P7:源代码——往往是对软件的唯一精确描述。
- P28:程序员是软件食物链的最后一环,架构师吃掉需求,设计师吃掉架构,而程序员消化设计。
- P29:发现错误的时间要尽可能接近引人该错误的时间。
- P77:本质的(Essential)的属性是一件事物必须具备、如果不具备就不是该事物的属性。偶然的(accidental)的属性则是指一件事物碰巧具有的属性,有没有这些属性并不影响该事物本身。
- P78:由技术因素导致失败的项目,原因通常是失控的复杂度。当没人知道对一处代码的改动会对其他代码带来什么影响时,项目也就很快停止进展了。
- P85:子系统间尽量减少联系:一个通用的规则是,如果 A 系统用到 B ,B 又用到 C ,那么 C 就不要再用到 A 了。系统层设计图应该是无环图。
- P111: 分而治之(Divide and Conquer):没有人的头脑大到装得下一个负责程序的全部细节。遇上死胡同,就迭代。
- P114:建立原型指的是:“写出用于回答特定设计问题的,量最少且能随时扔掉的代码”。开发人员应该把原型代码当作可以抛弃的代码。
- P174:对于超过 200 行代码的子程序来说,没有哪项研究发现它更够降低成本和/或降低出错率,而且在超过200行后,你迟早会在可读性方面遇到问题。
- P484:作者很推荐结对编程(Pair Programming)。
- P504:测试先行(Test first)的编程是最有用的软件开发实践之一。
- P568:不要为拙劣的代码编写文档--应当重写代码。 - Kernigham and Plauger 1987
