程序员修炼之道(二)
第二章,注重实效的途径
7,重复的危害
需求一旦改变的。相同的code 都需要改变。
DRY-Don't repeat yourself.
重复是怎样发生的。
- 强加的重复。开发者觉得他们无可选择--环境似乎要求重复。
- 无意的重复。开发者没有意识到他们在重复信息。
- 无耐心的重复。开发者偷懒,他们重复,因为那样似乎更容易。
- 开发者之间的重复。同一团队(或不同团队)的几个人重复了同样的信息。
1,强加的重复。
发挥一点聪明才智,通常能够消除重复的需要。答案是编写简单的过滤器或代码生成器。
糟糕的代码才需要更加多的注释。
2,无意的重复。
有时,重复来自设计中的错误。
3,无耐性的重复。
拷贝原来的代码。并作出一些改动。
不能偷懒,现在节省时间,以后可能花更多的时间。
4开发者之间的重复。
多交流,多看人间的源代码。相互学习的的过程。
让复用变动更加容易(Make it easy to reuse.)
8,正交性。
什么是正交性:如果两个或多个事务中的一个发生变化,不要影响其他事务,这些事物就是正交的。
1,正交的好处。
(消除相关事物之间的影响)Eliminate effects between unrelated things.
内聚:独立,具有单一,良好的定义的目的和Contantine称为内聚。
如果主件是相互隔离的,你就知道你能够改变其中之一,而不用担心其余组件。只要你不改变组件的外部接口,你就可以放心
你不会造成波及整个系统的问题。
如果你编写正交的系统,你得到两个主要好处:提高生产效率与降低风险。
2,提高生产效率。
- 改动得以局部化,所以开发时间和测试时间得以降低。
- 正交的途径还能够促进重用。把他们与新组件组合在一起。
- 如果你对正交的组件进行组合,生产效率会有相当微妙的提高。
3,降低风险。
- 正交的途径能减低开发中固有的风险。
- 有问题的代码区域被隔开来。
- 所得系统更加健壮。
- 正交系统可能得到更好的测试。针对组件测试更加容易
设计
大多数开发者都是熟知需要设计正交的系统。尽管他们可能会使用像模块化,基于组件,或是分层这样的术语描述该系统。

对于正交设计,有一种简单的测试方法。一旦设计好组件,问问你自己:如果我显著的改变某个特定功能背后的需求,有多少模块会收到影响。
在正交系统中,答案应该是“一个”。
编码
- 让你的 代码保持解耦。不依赖其他模块实现的代码,如果你需要改变这个对象的状态,让这个对象替你去做。
- 避免使用全局数据。
- 避免编写相似的函数。
养成不断地批判对待自己的代码的习惯。寻找任何重新进行组织,以改善其结构和正交性的机会。这个过程叫重构(refactoring).
9,可撤销性
如果某个想法是你唯一的想法,再没有什么比这更危险的事情了。
There are no final decisions(不存在最终决策)。
灵活的架构。
10,估算
Estimate to avoid Suprise(估算,以免发生意外)


浙公网安备 33010602011771号