面向对象设计——启发规则

    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中的峰值与出现设计错误或发生非预期变动的情况相对应,峰值越高,表明设计质量越差,可重用性也越差。

发布了39 篇原创文章 · 获赞 38 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/FRESHET/article/details/105468653