模块的7大内聚

本文详细解析了软件模块内聚的不同层次,从偶然内聚到功能内聚,逐级阐述其定义、实例和重要性,帮助开发者提升模块设计质量。

    按照内聚的紧密程度从低到高排列,依次为:偶然内聚,逻辑内聚,时间内聚,过程内聚,通信内聚,顺序内聚,功能内聚。

1.偶然内聚:

   指某些处理单元偶然放在一个模块里了,内聚性最弱;

2.逻辑内聚:

   指把几个逻辑上相关的处理单元放在同一个模块中(比如“数学计算模块”中的加减乘除等处理单元,所有单元都用来实现数学计算,但单元与单元间并无必然的联系,内聚性仅比偶然内聚性强);

3.时间内聚:

   指模块所包含的处理单元必须在同一时间段内执行(如“系统初始化模块”,单元与单元可能互不相关,但是必须在同一时间段内完成);

4.过程内聚:

   指模块包含的多个处理单元,需按一定的步骤一次完成(如“系统登录模块”的“权限检查单元”和“权限分配单元”);

5.通信内聚:

   指模块的处理单元都操作同一个数据集或者生成同一个数据集;

6.顺序内聚:

   指处理单元都与同一功能密切相关,且需顺序执行;

7.功能内聚:

   指模块内的各个处理单元,共同完成一个单一的功能;

### 模块内聚的定义 模块内聚是指模块内部各组成部分之间的联系程度,反映了模块内部功能的一致性和紧凑性。内聚意味着模块内的组件紧密关联并共同完成特定的任务[^1]。 --- ### 模块内聚的主要类型及其特点 #### 1. **功能内聚(Functional Cohesion)** 这是最级别的内聚形式,表示模块中的所有元素都服务于单个目标或功能。在这种情况下,模块具有清晰的目标和职责,通常遵循单一职责原则(SRP),从而提了代码的可维护性和可重用性[^1]。 #### 2. **顺序内聚(Sequential Cohesion)** 当模块中的元素按一定顺序执行,并且后续的操作依赖于前面的结果时,则称为顺序内聚。这种类型的内聚能够增强代码逻辑的连贯性,使程序更易于理解[^4]。 #### 3. **通信内聚(Communicational Cohesion)** 如果模块中的多个处理单元共享相同的数据输入或输出,则该模块属于通信内聚。尽管其内聚水平于功能内聚,但仍有助于减少冗余数据传输[^1]。 #### 4. **过程内聚(Procedural Cohesion)** 此类型涉及一组按照固定序列执行的过程化操作集合。虽然这些操作可能彼此相关联,但它们未必针对同一目的工作,因此相较于更层次的内聚而言稍显松散[^1]。 #### 5. **时间内聚(Temporal Cohesion)** 当某些活动因为时间上的原因而组合在一起时就形成了时间上集中的情况——即所谓的时间内聚。这类设计常见于初始化阶段或者周期性的任务调度场景下。 #### 6. **逻辑内聚(Logical Cohesion)** 当若干相似性质的行为被归类到同一个模块里时便构成了逻辑内聚。然而由于缺乏明确统一的目的导向,此类结构往往难以满足长期需求变化的要求[^1]。 #### 7. **偶然内聚(Coincidental Cohesion)** 最级别的内聚状态,在这里只是简单地把一些毫无关系的部分凑合起来形成一个整体而已;显然这不是理想的设计方式。 --- ### 软件工程中如何应用模块内聚? 为了构建质量的软件系统,应追求较模块内聚度: - **遵循单一职责原则**:确保每个模块只负责一项核心业务职能[^1]。 - **优化数据交互机制**:通过合理规划参数传递路径来促进不同子系统的效协同作业。 - **科学划分功能边界**:依据实际应用场景灵活调整粒度小,既不过分细化也不过度概括[^1]。 此外还需注意平衡好与其他外部因素比如性能指标等方面的权衡考量[^2]。 ```python # 示例:基于功能内聚的原则重构代码 def calculate_discount(price, discount_rate): """计算折扣后的价格""" discounted_price = price * (1 - discount_rate) return round(discounted_price, 2) def apply_tax(amount, tax_rate): """应用税率后返回总金额""" taxed_amount = amount * (1 + tax_rate) return round(taxed_amount, 2) # 使用单独的小型函数代替复杂的多功能函数 final_price = apply_tax(calculate_discount(100, 0.1), 0.08) print(final_price) # 输出最终含税价款 ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值