《程序员修炼之道》阅读笔记2

维持正交性

正交:两个事物中一个发生变化,对其他无影响,这两个事物就是具有正交性; 
正交性的好处:

  1. 提高生存率;
  2. 降低风险

让代码维持正交性,可以消除无关事物之间的影响;

可撤销,可更换

不存在最终的目标,也没有终极的架构;项目的任何一个模块一个组件都是可撤销,可替换的;不要过度依赖于某个第三方的产品,否则你的项目就被第三方绑架了;
通过灵活的架构,将第三方产品隐藏在良好的抽象接口之后;

无处不在的自动化

多用python、shell等脚本语言,将工作的重复性任务自动化实现; 
对于编程中的重复性代码,通过脚本自动生成代码来实现; 
在工作中多总结,提炼小系统,让流程、代码都自动化; 
linux下的cron是个好东西,让你的自动化任务都在夜深人静时准时执行;

不要靠巧合编程

你所写的代码都是深思熟虑过后的产物,先有设计,然后再产出;想到一处写一处是刚毕业的水平; 
按照合约编程,别想着这个地方可以增加多少好功能,画蛇添足的故事太多,过多的超过用户期望未必有好的结果,可能就成了用户不想要的;

测试的重要性

测试重要,大家都知道;但单元测试,有多少个项目能认真的做过;没有质量高、覆盖好的单元测试,哪来的勇气去重构一个个庞然大物似的老项目? 
这句话很精辟:测试你的软件,否则用户就得测试;

新方法和新工具

有个新工具或新方法想在项目组中推广,这事挺好;但不要低估采用新工具和新方法的代价,可能你的项目需要花上太多精力来熟悉这个方法,而第一个采用这个方法的项目,可能就只能是实验品; 
批判的看待方法学,从中提炼适用团队的精华;