Chinaunix首页 | 论坛 | 博客
  • 博客访问: 12452439
  • 博文数量: 1293
  • 博客积分: 13501
  • 博客等级: 上将
  • 技术积分: 17974
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 18:11
文章分类

全部博文(1293)

文章存档

2019年(1)

2018年(1)

2016年(118)

2015年(257)

2014年(128)

2013年(222)

2012年(229)

2011年(337)

分类: 项目管理

2014-09-02 17:39:51

在设计类的时候,抽象和封装已经很大程度上取代了内聚性。但是在子程序这一层次上,内聚性仍是常用的启发式方法。下面内容,来自《代码大全》

对与子程序而言,内聚性是指子程序中各个操作之间的联系的紧密程度。

我们的目标是让子程序只把一件事情做好,不再做任何其他事情。

内聚性是针对操作的概念。即操作具有内聚性。通常,一个操作指一个语句,或一个函数调用。一个是简单的操作,一个是复杂的操作。

内聚性的一些概念,理解概念有助于思考如何让子程序尽可能的内聚。

1、  功能的内聚性:让一个子程序仅执行一项操作。这是最强的也是最好的内聚性。其他的内聚性则不够理想。

2、  顺序上的内聚性:子程序内包含按照特定顺序执行的操作,这些步骤需要共享数据,而只有全部执行完毕后,才完成了一下完整的功能。 顺序上的内聚性设计成功能上的内聚性需要对顺序进行分解,形成多个功能更加单一的子程序 

3、  通信上的内聚性:子程序中的不同操作使用了同样的数据,当不存在其他任何联系。 优化的方法是将子程序分解为多个子程序。

4、  临时的内聚性:子程序中含有一些因为需要同时执行才放到一起的操作。 优化方法是把临时性的子程序看成是一系列事件的组织者,即让它直接调用其他的子程序,而不是直接执行所有的操作。另外,可以通过函数的命名,表达子程序完成的功能。避免使用多个操作叠加的方法命名,因为它暗示子程序只有巧合的内聚性。

除功能的内聚性外,其他类型的内聚性都是不可取的。要想办法避免。

1、  过程上的内聚性:子程序中的操作是按特定的顺序进行的,除此外没有任何联系。对子程序分解,把不同的功能纳入不同的子程序中,让调用方的子程序具有单一而完整的功能。

2、  逻辑上的内聚性:若干操作被放入同一个子程序中,通过传入的控制标志选择执行其中的一项操作。各个操作间没有任何的逻辑关系,这些操作只是被包含在一个很大的case 或 if 语句中。如果此子程序只是分发命令,根据命令调用不同的子程序,则这种做法也是不错的。其他的不好的情况,可以通过分解来进行优化。分解为多个独立的子程序。

3、  巧合的内聚性:子程序内部的各个操作间没有任何的关联。

内聚性考虑的是在一个子程序内部,操作的关联程度。

编写功能上的内聚性的子程序几乎总是可能的,因此把注意力集中于功能上的内聚性,从而得到最大的收获。

使用上面的建议对我的流程引擎程序进行内聚性的优化,发现确实很有价值。值得在后面的设计和编码中坚持这种优化。


转自博客:
http://blog.csdn.net/chgaowei/article/details/4927437

参考博客:
http://blog.sina.com.cn/s/blog_4ca059540100jnk7.html

阅读(2005) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~