1.DRY
对程序员来说,维护并不仅仅是修正bug或者增强特性。程序员必须不断地维护,它是整个项目开发过程中的理性事务。
但是,知识在系统中的重复简直就是维护的噩梦。所以我们觉得,开发可靠的软件,并且让软件更容易理解和维护的唯一途径:遵循DRY原则:
"系统中的每一项知识都须具有单一,无歧异,权威的表述"
DRY:Dont repeat Yourself.(注重实效的程序员工具箱的基本工具)
2.重复是怎样发生的?
-强加的重复:imposed duplication
-无意的重复:inadvertent duplication
-无耐性的重复:impatient duplication
-开发者之间的重复:interdeveloper duplication
3.强加的重复
如何避免这种强加的重复?
-信息的多种表示:编写简单的过滤器和代码生成器,从原数据中提取信息。
-代码中的文档:把低级的知识放在代码中,把注释保留给其他的高级说明。
-文档和代码:代码和文档的schema尽可能的放在一起,这样保证代码修改的同时方便修改文档。
-语言问题:用头文件记录接口问题,用实现文件记载代码中无须了解的实现细节。
4.无意的重复
可能来自设计中的错误。
(在java/C++这样的面向对象语言中,在有可能的情况下,尽可能的用Accessor函数来读写对象的属性。)
5.无耐性的重复
copy原来的,现有的代码,或者做一点点改动。
容易检测,和处理的重复形式,但那需要训练,并愿意为避免以后的痛苦而预先花一些时间。
"欲速则不达"
6.开发者之间的重复
解决这个问题的最好方式,
-清晰的设计,强有力的技术项目领导
-开发者之间项目进行主动的交流
-阅读别人的源码和文档。
"Make It Easy to Reuse."
(如果不容易,大家就不去复用,就不能避免重复知识的风险)
所以,让服用变得容易使解决问题的根本办法。