1、把一段代码放入一个精心命名的子程序,是说明其功能的最好办
法。这样就不必阅读这样一段语句:
if ( Node <> NULL )
while ( Node.Next <> NULL ) do
Node = Node.Next
LeafName = Node.Name
else
LeafName = " "
代替它的是:
LeafName = GetleafName(Node)
2、重复性大的小段代码也可以写成子程序
3、通过对450个Fortran 子程序的调查表明,50%的强内聚性子程序是没有错误的,而只有18%的弱内聚性子程序才是无错的(Card,carch和Agresti 1986)。另一项对另外450 个子程序的调查则表明,弱内聚性子程序的出错机会要比强内聚性出错机会高6 倍,而修正成本则要高19倍。
4、将不稳定的区域孤立起来,以便使改动带来的影响仅限于一个模块中。
5、最好把难于设计和实现的域隐含起来,因为此处的工作可能作得很糟,你可能不得不返工。把它们分隔起来,以便使由于拙劣设计或实现对系统所带来的危害最小。
6、在一些较大的项目中,一个正式的结构设计可能只是分解系统,而其余大量的设计工作往往留在创建过程中进行。在其它的大型项目中,设计工作可能是非常详细的,以致于编码不过是一项机械的工作而已,但是设计很少有这样详尽的。编码人员常常要进行一些设计工作。
7、“软件设计”一词的意思是指,把一个计算机程序的定义转变成可以运行程序的设计方法。设计是联系要求定义和编码与调试的活动的桥梁。它是一个启发的过程而不是一个确定的过程,需要创造性和深刻的理解力。设计活动的绝大部分活动都是针对当前某特定项目进行的。
8、自顶向下设计指导原则的依据是:人脑一次只能考虑有限数量的细节。如果你从一个较简略的子程序开始,逐步把它分解成更加详细的子程序,就不必每次考虑过多的细节。这种方法也常称之为“分而治之”战术。它对于分层结构往往是最有效的。
9、在面向对象编程中,继承性简化了编程,因为你只要写一个通用子程序来处理目标间的共同特性,再编写几个专用子程序去处理它们间的不同特性就可以了。
10、在设计中,最终结果往往看起来是井井有条的,似乎设计者从未犯过任何设计错误,事实上,设计过程很少有像最终结果那样井井有条。