程序员修炼之道(二)

第二章,注重实效的途径

 

7,重复的危害

需求一旦改变的。相同的code 都需要改变。

DRY-Don't repeat yourself.

 

重复是怎样发生的。

  1. 强加的重复。开发者觉得他们无可选择--环境似乎要求重复。
  2. 无意的重复。开发者没有意识到他们在重复信息。
  3. 无耐心的重复。开发者偷懒,他们重复,因为那样似乎更容易。
  4. 开发者之间的重复。同一团队(或不同团队)的几个人重复了同样的信息。

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(估算,以免发生意外)

 

 

  

posted @ 2014-01-04 11:52  chengdu.jack.li  阅读(255)  评论(0)    收藏  举报