11.2 启发规则
人们使用面向对象方法学开发软件的历史虽然不长,但也积累了一些经验
。总结这些经验得出了几条启发规则,它们往往能帮助软件开发人员提高面向对象
设计的质量。
1.设计结果应该清断易懂
使设计结果清晰、易读,易懂,是提高软件可维护性和可重用性的重要措施
。显然,人们不会重用那些他们不理解的设计。保证设计结果清晰易懂的主要因素
如下*:
(1)用词一致,应该使名字与它所代表的事物一致,而且应该尽量使用人们习惯的
名字,不同类中相似服务的名字应该相同。
(2)使用已有的协议,如果开发同一软件的其他设计人员已经建立了类的协议,或者
在所使用的类库中已有相应的协议,则应该使用这些已有的协议
(3)减少消息模式的数目,如果已有标准的消息协议,设计人员应该遵守这些协议。
如果确需自已建立消息协议,则应该尽量减少消息模式的数目,只要可能,就使消
息具有一致的模式,以利于读者理解。
(4)避免模糊的定义。一个类的用途应该是有限的,而且应该从类名可以较容易地推
想出它的用途。
2.一般-特殊结构的深度应适当
应该使类等级中包含的层次数适当。一般说来,在一个中等规模(大约包含
100个类)的系统中,类等级层次数应保持为7±2。不应该仅仅从方便编码的角度出
发随意创建派生类,应该使一般-特殊结构与领域知识或常识保持一致。
3.设计简单的类
应该尽量设计小而简单的类,以便于开发和管理。当类很大的时候,要记住
它的所有服务是非常困难的。经验表明,如果一个类的定义不超过一页纸(或两屏),
则使用这个类是比较容易的。为使类保持简单,应该注意以下几点:
(1)避免包含过多的属性。属性过多通常表明这个类过分复杂了,它所完成的功能
可能太多了。
(2)有明确的定义,为了使类的定义明确,分配给每个类的任务应该简单,最好能用一
两个单语句描述它的任务。
(3)尽量简化对象之间的合作关系、如果需要多个对象协同配合才能做好一件事,
则破坏了类的简明性和清晰性
(4)不要提供太多服务,一个类提供的服务过多,同样表明这个类过分复杂。典型地,
一个类提供的公共服务不超过7个。
在开发大型软件系统时,遵循上述启发规则也会带来另一个问题:设计出大
量较小的类,这同样会带来一定复杂性。解决这个问题的办法,是把系统中的类按逻
辑分组,也就是划分“主题”。
4.使用简单的协议
一般说来,消息中的参数不要想过3个。当然,不超过3个的限也不是绝对的
,但是,经验表明,通过复杂消息相互关联的对象是紧耦合的,对一个对象的修改往往
导致其他对象的修改。
5.使用简单的服务
面向对象设计出来的类中的服务通常都很小,一般只有3~5行源程序语句,
可以用仅含一个动词和一个宾语的简单句子描述它的功能。如果一个服务中包含了
过多的程序语句,或者语句嵌套层次太多,或者使用了复杂的CASE语句,则应该仔细
检查这个服务,设法分解或简化它,一般说来,应该尽量避免使用复杂的服务。如果
需要在服务中使用CASE语句,通常应该考虑用一般特殊结构代替这个类的可能性
6.把设计変动减至最小
通常,设计的质量越高,设计结果保持不变的时间也越长。即使出现必须修改设计的情况,也应该使修改的范围尽可能小,理想的设计变动曲线如图11.1所示。
在设计的早期阶段,变动较大,随着时间推移,设计方案日趋成熟,改动也越来越小了,图1.1中的峰值与出现设计错误或发生非预期变动的情况相对应,峰值越高,表明设计质量越差,可重用性也越差。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!