在软件开发领域,内聚是一个非常重要的概念。它是指一个模块或一个组件内部各元素之间联系紧密,且都服务于同一个职责或功能。当一个模块内部的元素之间联系紧密时,我们可以说该模块具有高内聚性。而如果一个模块内部的元素联系松散,则称之为低内聚性。分类也是软件开发中的一个重要概念,它将元素按照一定规则进行划分,使得每个分类内元素之间具有相同或相似的特点。
内聚的分类,就是将元素按照它们之间的联系程度进行划分,以此达到提高系统内部聚合度和降低耦合度的目的。下面我们从不同角度展开,进一步分析内聚的分类。
从视角一:函数内聚
函数内聚是指函数内部各个语句或操作彼此之间的联系紧密程度。根据元素彼此的联系程度不同,函数内聚又可以分为以下几种类型:
1.顺序内聚:函数内的各个语句按照执行顺序彼此连接,实现了简单的一步流程,但其中没有任何联系,各个语句之间存在逻辑上的毫无关联,因此聚合度很低,是低内聚性的典型代表。
2.通信内聚:函数内的各个语句之间根据一个单一的输入参数或者参数列表来完成特定的工作,因为所有参数都是关于同一个问题的,所以这种内聚称作通信内聚,是一种较强内聚性的函数设计方式。
3.过程内聚:函数内的各个语句之间相互关联,完成一个整体上的任务,例如用户登录功能中的身份认证、密码验证、网络连接等等。这种内聚性是一种表现达到了中等强度的设计方法。
4.功能内聚:功能内聚是指函数内的各个语句都支持同一个目标,例如把一个特定格式的字符串转化为一个数值、把一个文本文件保存到另一个目录中、从数据库中读取数据并展示在前端界面。这种内聚性是一种非常强的设计方法,且常常被广泛应用。
5.内聚性最高的是信息内聚,函数的各个语句均得到一个中心性的指导,以支持一种特殊的目标信息分类实现。
从视角二:模块内聚
模块内聚是指模块内各个类之间相互关联和彼此协作程度。模块内聚的类型包括以下几种:
1.基本内聚:模块内的所有元素都是同一个抽象主题范畴中的组成部分,例如一个离线文档格式解析器,其模块内所有的类都是关于处理、下发、显示这个脱机文档处理的。
2.控制内聚:在这种内聚类型中,模块内的所有元素都参与到控制实现中。例如一个API模块,其中的各个函数、类对平台提供统一的接口,以完成系统中每个部分的交流。
3.信息内聚:整个模块内部围绕一种数据结构展开,例如一个财务软件中,所有的类均围绕会计本质内部数据即账单、报销、发票等等。
4.功能内聚:模块内所有元素的功能都是针对同一目标,例如一个图像处理器,提供各种不同的图像处理功能。
5.顺序内聚:一些相关的元素被放在同一模块中,以使其依据预定该模块的执行顺序从而实现一种大型策略或者计算流程。
从视角三:面向对象程序设计内聚
面向对象程序设计(Object-Oriented Programming,简称OOP)也是一种常见的内聚分类。在OOP中,开发者可以利用类之间的继承、构成、关联等关系,充分发挥内聚性。例如:
1. 继承内聚:子类继承父类,子类可以拥有父类相同的属性和方法,还可以拥有自己独有的属性和方法。
2. 聚合内聚:两个类之间具有拥有和被拥有关系,例如汽车和引擎的关系。
3. 组合内聚:两个类之间的关系具有非常强的组合性,例如CPU和电脑的关系。
内聚的分类不仅有助于软件开发者优化系统设计,还有利于提高代码可读性。开发者在选择模块内聚类型时,要根据系统和模块的实际情况综合选择最合适的方式。总的来说,好的内聚性设计能够提高代码复用率和易维护性,减少开发者编写无用代码的时间,提高软件开发效率。
扫码咨询 领取资料