高内聚模块的优点:
容易维护:阅读方便,定位问题方便
易于重用:功能单一
1. 分配给模块的名称是他的操作(做什么),而不是他的逻辑(实现的算法)或者背景(特定的应用)。
2. 偶然性内聚,模块执行多个完全不相关的操作。
3. 逻辑性内聚,模块执行一系列相关的操作,每个操作由调用模块来选择。
exp: add_or_del_XXX(int op_mode);
4. 时间性内聚,模块执行一系列与时间有关的操作。
5. 过程性内聚,模块执行一系列与产品要遵循的步骤顺序有关的操作。
6. 通信性内聚,模块执行一系列与产品要遵循的步骤顺序有关的操作。并且,所有的操作都对相同的数据进行。
4,5,6 又被成为“流程图内聚” [by Dan Berry, personal commmunication 1978]
7. 功能性内聚,只执行一个操作或只达到单一目标。
8. 信息性内聚,模块执行许多操作,每个都有各自的入口点,每个操作的代码都相对独立,且所有操作都对相同的数据结构完成。