📅  最后修改于: 2021-01-10 02:53:33             🧑  作者: Mango
在软件工程中,耦合是软件模块之间的相互依赖程度。紧密耦合的两个模块相互之间非常依赖。但是,松散耦合的两个模块彼此不依赖。未耦合的模块在它们内部完全没有相互依赖性。
图中显示了各种类型的耦合技术:
良好的设计是低耦合的设计。耦合通过模块之间的关系数来衡量。即,随着模块之间的调用数量增加或共享数据量大,耦合增加。因此,可以说具有高耦合的设计将具有更多的误差。
1.没有直接耦合: M1和M2之间没有直接耦合。
在这种情况下,模块从属于不同的模块。因此,没有直接耦合。
2.数据耦合:当一个模块的数据传递到另一模块时,这称为数据耦合。
3.标记耦合:如果两个模块使用复合数据项(例如结构,对象等)进行通信,则它们将被标记耦合。当模块将非全局数据结构或整个结构传递给另一个模块时,它们被称为标记耦合。例如,将C语言中的结构变量或C++语言中的对象传递给模块。
4.控制耦合:如果使用来自一个模块的数据来指导另一个模块的指令执行结构,则两个模块之间存在控制耦合。
5.外部耦合:当两个模块共享外部施加的数据格式,通信协议或设备接口时,就会发生外部耦合。这与与外部工具和设备的通信有关。
6.通用耦合:如果两个模块通过某些全局数据项共享信息,则它们是通用耦合。
7.内容耦合:如果两个模块共享代码,则它们之间存在内容耦合,例如,从一个模块到另一个模块的分支。
在计算机程序设计中,内聚性定义了模块的各个元素所属的程度。因此,内聚力衡量给定模块内功能之间的关系强度。例如,在高度内聚的系统中,功能密切相关。
内聚力是测量的序数类型,通常被描述为“高内聚力”或“低内聚力”。
Coupling | Cohesion |
---|---|
Coupling is also called Inter-Module Binding. | Cohesion is also called Intra-Module Binding. |
Coupling shows the relationships between modules. | Cohesion shows the relationship within the module. |
Coupling shows the relative independence between the modules. | Cohesion shows the module’s relative functional strength. |
While creating, you should aim for low coupling, i.e., dependency among modules should be less. | While creating you should aim for high cohesion, i.e., a cohesive component/ module focuses on a single function (i.e., single-mindedness) with little interaction with other modules of the system. |
In coupling, modules are linked to the other modules. | In cohesion, the module focuses on a single thing. |