软件模块之间耦合度的强弱排序

2023年5月22日12:06:27

高内聚、低耦合是软件设计中非常关键的概念。耦合度越低,两个模块之间相互影响越小,独立性越强,越容易维护和扩展。以下由耦合度由高向低做一说明,在软件设计中尽量降低模块之间的耦合度。

  1. 内容耦合:举个例子,甲盖房子时,把自家的梁架在邻居乙的柱子上,邻居乙拆自家房子时,甲的房子倒了,甲的房子和乙的房子在内容耦合。我们将一个模块直接操作另外一个模块的数据,称为内容耦合。如:模块A有一个方法,直接读取模块B的一个数据变量c进行下一步操作,此时开发模块B的程序员将c变量删除或改名,则模块A直接崩溃。开发软件时绝不允许这种事情发生,但有些新手就能给你写出来,内容耦合也叫病态耦合。

  2. 公共耦合:多个模块共同引用一个全局对象称为公共耦合。这个模块无法确定那个模块给全局变量赋了值,降低了程序的可读性。软件开发中尽量少用全局公共变量,替代办法使用参数传递解决问题。如果非要使用可以使用松散公共耦合,即只有一个模块写入值,其它模块只是读取。

  3. 外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。外部耦合和公共耦合很像,区别就是一个是简单变量,一个是复杂数据结构。

  4. 控制耦合:一个模块通过接口向另一个模块传递一个控制信号,接受信号的模块根据信号值而进行适当的动作,这种耦合被称为控制耦合,即根据控制信号产生分支语句。如A类调用B类的方法,B类根据A类传入的参数值,决定执行那部分代码,则B依赖A,A、B两个类产生控制耦合关系。控制耦合一般使用多态的方式解决问题。

  5. 标记耦合:标记耦合指两个模块之间传递的是数据结构,如高级语言的数组名、记录名、文件名等这些名字即为标记,其实传递的是这个数据结构的地址。

  6. 数据耦合:两个模块之间有调用关系,传递的是简单数据值,是值传递。耦合度低,模块独立性好,模块间的影响最小。

  7. 非直接耦合:两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这种耦合的模块独立性最强。

总结:尽量使用数据耦合,少用控制耦合和标记耦合,限制公共耦合和外部耦合的范围,完全不用内容耦合

参考:https://blog.csdn.net/tao475824827/article/details/104157419

  • 作者:guoyp2126
  • 原文链接:https://blog.csdn.net/guoyp2126/article/details/114129550
    更新时间:2023年5月22日12:06:27 ,共 941 字。