第二章 注重实效的途径
重复是把双刃剑,一方面加强程序效率以及增加编程的简易程度,但另一方面却是造成Bug的重要原因,这也是计算机中的自相矛盾一方面。
作为程序员,我们总是在收集知识并且加以利用,对我们的知识加以规范,对我们的知识进行运用,但知识的不稳定以及快速的更新导致我们必须也不断跟进,这是很令人头疼的。如果我们的东西过时了,就意味着我们必须把我们之前学习到的全部更新,这么一个过程繁琐而令人困恼。所以在软件工程中,复用是一项重要的工作,复用别人的代码,编写自己的知识库,这些都是复用。但一旦我们自己的知识库过期了,或者找的别人的代码是旧版本的,这就造成一些问题;或者代码本身已经不符合要求了,就必须对代码进行整体的修改。这个过程就是对于复用负面效果。
书中吧重复分为强加的重复——环境要求的重复,无意的重复——开发者没意识到的重复,无耐性的重复——偷懒的结果,开发者之间的重复,这些重复大多发生在代码和文档中,因为语言问题和自动生成问题而产生的一些重复,注意这些多余的东西能提高实效。
另外书中提供了一种正交的系统设计方式,所谓正交就是设计良好的不同功能的代码之间是相互正交的——也就是互不相干的。如果一个系统会相互干扰,那么运行的时候显然是极其混乱的,正交的好处也显而易见——提高生产率与降低风险。提高生产率是因为对于系统的改动都变为了局部的改变,把测试时间降到最低,另外促进复用,提高各个组件的融合。将低风险是因为有问题的代码被隔离了起来,系统更加健壮了。
这些技巧我在平常的开发过程里面经常会使用,同时揭示的问题也十分尖锐,所以在今后的的学习过程中要多注意这些问题。