内聚性,是软件工程中一个重要的概念。在软件设计及程序开发过程中,内聚性描述的是一个模块内部的各个元素之间彼此联系程度的强度,即一个模块内的各个实现部分所表现出的各个功能之间的相关度。内聚性的强弱程度直接影响着软件模块的可维护性、可扩展性等方面。
内聚性的类别:
1.功能内聚性:指模块内各个元素之间实现了同一目标或者同一功能的联系程度。例如,一个模块是用来处理文件I/O操作的,那么里面的各个部分都与这个功能相关。
2.顺序内聚性:指模块里的各个元素按照一定的顺序组织起来,每一部分的输出会成为下一级的输入。例如,一个模块用来处理某种输入,然后对其进行一系列计算,得出最终的结果。
3.通信内聚性:指模块内的各个元素都要完成一个公共的任务,但是,这个任务分解成了不同的部分,需要进一步的通信才能完成。例如某项工作需要在一个特定的时间段内完成,在此期间各个部分都需要进行交互。
4.过程内聚性:指模块内各个元素按照某个特定的流程组织起来。例如,一个夹具需要以特定的方式组装,需要按照一定的顺序进行处理,完成后才能被正常使用。
5.临时内聚性/偶然内聚性:指一些并不彼此影响的部分被组合在一起,完成一个任务。这种内聚性是程序设计中应尽量避免的。
内聚性的重要性:
良好的内聚性代表了模块内各个部分之间联系紧密、互相协作、功能清晰,这样的模块具有更好的可维护性和可扩展性,即更容易修改和升级。此外,内聚性也有助于避免负责功能的变更波及到模块其他部分的问题,提高代码重用率。
提高内聚性的方法:
1.追求高内聚的思想。在设计模块时考虑到哪些东西应该在单元内、哪些应该外部调用,将某个模块要做的事情分解为多个小任务再进行集成。
2.合理分配职责。将各个元素的职责划分清楚,保证职责单一。一个模块的每个元素都只有一个职责,并且尽量把自己的任务完成得尽善尽美。
3.良好的通信机制。尽量保证各个模块之间的信息传递是高效的、简单的,要充分利用某些现成的通信工具(如消息队列)或者提供自己的API接口。
4.防止循环依赖。循环依赖是一种情况,在这种情况下,每个模块都与其他模块发生联系。它不只影响可扩展性,而且也会在特定情况下阻塞应用程序,尤其是在多线程环境下。
5.代码重构。重构可以改进程序结构,通过安排代码构成更有意义的关系,以提高代码质量和可维护性。
总之,内聚性是一项非常关键的设计原则之一,通过仔细考虑模块之间的关系、分配职责,可以有效地改善程序的可维护性和可扩展性。
扫码咨询 领取资料