什么是内聚和耦合?

内聚(Cohesion)和耦合(Coupling)是衡量软件模块设计质量的两个重要概念,它们分别关注模块内部和模块之间的关联程度与依赖关系。
一、内聚(Cohesion)
1.定义:内聚是一个模块内部各成分之间相关联程度的度量。它反映了模块内部功能的聚合性,即模块内部各元素(如数据、功能等)为实现同一目标而相互关联的程度。
2.分类:内聚按紧密程度从低到高可分为以下几种类型(根据Constantine、Yourdon、Stevens等人的观点,但紧密程度的增长是非线性的):
① 偶然内聚:模块内部各个部分之间没有明显的关联,仅仅是偶然放在一起,这是最低级别的内聚。
② 逻辑内聚:模块中的元素被组织在一起,因为它们在逻辑上分类相似,通常通过一个控制语句(如if-else或switch)来选择执行。
③ 时间内聚:模块中的元素相关联,因为它们需要在同一时间段内被执行。
④ 过程内聚:模块中的元素协同工作执行一个任务序列,彼此之间按照特定顺序执行。
⑤ 通信内聚(信息内聚):模块中的所有功能都操作相同的数据结构,即模块内各个组成部分都使用相同的数据或产生相同的数据结构。
⑥ 顺序内聚:模块内的操作必须按特定顺序执行,输出数据成为下一步操作的输入数据。
⑦ 功能内聚:模块内所有元素都紧密围绕一个单一的功能组织,共同完成一个特定的任务,这是最高级别的内聚。
3.理想状态:在模块设计中,追求高内聚,即模块内部各元素之间的联系越紧密越好,这样有助于模块功能的清晰和专注,提高模块的可理解性和复用性。
二、耦合(Coupling)
1.定义:耦合是模块之间依赖程度的度量。它描述了不同模块之间相互连接和相互影响的紧密程度。
2.分类:耦合按从强到弱的顺序可分为以下几种类型:
① 内容耦合:当一个模块直接修改或操作另一个模块的数据,或者直接转入另一个模块时,就发生了内容耦合。这是最强的耦合类型,模块独立性最弱。
② 公共耦合:两个以上的模块共同引用一个全局数据项就称为公共耦合。这种耦合的紧密程度取决于模块对公共数据的存取方式。
③ 控制耦合:一个模块在界面上传递一个信号(如开关值、标志量等)控制另一个模块,接收信号的模块的动作根据信号值进行调整。
④ 标记耦合:模块间通过参数传递复杂的内部数据结构,这种数据结构的变化将使相关的模块发生变化。
⑤ 数据耦合:模块间通过参数传递基本类型的数据,这是最佳的耦合方式,因为模块之间的依赖仅限于参数传递。
⑥ 非直接耦合:两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。这是最弱的耦合类型,模块独立性最强。
3.理想状态:在模块设计中,追求低耦合,即模块之间的依赖关系越弱越好,这样有助于模块的独立性和可维护性,降低模块间相互影响的风险。
综上所述,内聚和耦合是衡量模块设计质量的重要指标,理想的软件设计应该追求高内聚和低耦合。这样的设计有助于提高软件的可维护性、可重用性和可扩展性。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

selenia8860

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值