阅读笔记:程序员修炼之道7
第二章主要讲的是重复,作者告诉我们不要重复。然而重复是怎样发生的呢?作者给出了如下的分类。
强加的重复(imposed duplication)。开发者觉得他们无可选择——环境似乎要求重复
无意的重复(inadvertent duplication)。开发者没有意识到他们在重复信息
无耐性的重复( impatient duplication )。开发者偷懒.他们重复.因为那样似乎更窄易
开发者之间的重复( interdeveloper duplication )。同一团队(或不同团队)的几个人重复了同样的信息:
作者之后又引入数学中的正交性,提出了计算机科学中的正交性。“正交性”是从几何学中借来的术语惇如果两条直线相交成直角、它们就是正交的.比如图中的坐标轴用向斌术语说,这两条直线互不依赖﹒沿着某·条直线移动,你世影到另﹒条直线上的位置不变.在计算技术中、该术语用于表示某种不相依赖性或是解耦性:﹒如果两个或更多事物中的一个发生必化、不会影响其他事物、这些事物就是正交的在设计良好的系统中.数据库代码与用户界面是正交的:你町以改动界面,而不影响数据库;更换数据库,而不用改动界面。
Eliminate Effects Between Unrelated Things消除无关事物之间的影响我们想要设计自足(self-contained)的组件:独立,具有单一、良好定义的目的( Yourdon和 Constantine称之为内聚( cohesion ) [YC86] )。如果组件是相互隔离的,你就知道你能够改变其中之一,而不用担心其余组件。只要你不改变组件的外部接口.你就可以放心:你不会造成波及整个系统的问题。如果你编写正交的系统,你得到两个主要好处:提高生产率与降低风险,