内聚和耦合之间的区别是什么?

耦合和内聚如何导致软件设计的好坏?

举些什么例子来概括这两者之间的区别,以及它们对整体代码质量的影响?


当前回答

理论的区别

凝聚力

内聚性是模块相对功能强度的表征。 内聚模块执行单一任务,几乎不需要与其他模块交互 程序其他部分的组件。 具有高内聚和低耦合的模块称为功能独立模块 其他模块。

衔接的分类

1.巧合2。逻辑3。时间4。程序5。沟通6。连续7。功能

耦合

耦合表示模块之间的相对依赖关系。 两个模块之间的耦合程度取决于它们的接口复杂性。

其他回答

简单地说,内聚性表示代码库的一部分在逻辑上形成单个原子单元的程度。另一方面,耦合表示单个单元对其他单元的依赖程度。换句话说,它是两个或多个单元之间的连接数。数量越少,耦合越低。

本质上,高内聚意味着将代码库中相互关联的部分保存在一个地方。同时,低耦合是关于尽可能多地分离代码库中不相关的部分。

从内聚和耦合角度来看的代码类型:

理想是遵循指导方针的代码。它是松散耦合和高度内聚的。我们可以用下图来说明这样的代码:

God Object是引入高内聚和高耦合的结果。它是一种反模式,基本上代表一段一次性完成所有工作的代码: 当不同类或模块之间的边界选择不当时,就会出现选择不当的情况

破坏性解耦是最有趣的一种。当程序员试图解耦代码库时,有时会发生这种情况,以至于代码完全失去了重点:

点击这里阅读更多

在面向对象编程语言中,模块内部的高内聚和模块之间的低耦合通常被认为与高质量有关。

例如,每个Java类中的代码必须具有较高的内部内聚性,但要尽可能地与其他Java类中的代码松散耦合。

Meyer的面向对象软件构建(第二版)的第3章对这些问题进行了很好的描述。

内聚性是一个模块相对功能强度的指示。

A cohesive module performs a single task, requiring little interaction with other components in other parts of a program. Stated simply, a cohesive module should (ideally) do just one thing. Conventional view: the “single-mindedness” of a module OO view: cohesion implies that a component or class encapsulates only attributes and operations that are closely related to one another and to the class or component itself Levels of cohesion Functional Layer Communicational Sequential Procedural Temporal utility

耦合表示模块之间的相对相互依赖。

耦合取决于模块之间的接口复杂性 指向一个模块的条目或引用,以及什么数据 通过接口传递。 传统观点: 一个组件与其他组件和外部世界的连接程度 OO视图:类之间连接程度的定性度量 耦合水平 内容 常见 控制 邮票 数据 程序调用 类型使用 包含或导入 外部#

内聚指的是类(或模块)可以做什么。低内聚意味着这个类会做各种各样的动作——它很宽泛,不关注它应该做什么。高内聚意味着类专注于它应该做的事情,即只有与类的意图相关的方法。

低内聚的例子:

-------------------
| Staff           |
-------------------
| checkEmail()    |
| sendEmail()     |
| emailValidate() |
| PrintLetter()   |
-------------------

高内聚的例子:

----------------------------
| Staff                   |
----------------------------
| -salary                 |
| -emailAddr              |
----------------------------
| setSalary(newSalary)    |
| getSalary()             |
| setEmailAddr(newEmail)  |
| getEmailAddr()          |
----------------------------

至于耦合,它指的是两个类/模块彼此之间的关联或依赖程度。对于低耦合类,改变一个类中的主要内容不应该影响到另一个类。高耦合会使更改和维护代码变得困难;由于类紧密地结合在一起,因此进行更改可能需要对整个系统进行改造。

好的软件设计具有高内聚性和低耦合性。

耦合=两个模块之间的交互/关系… 内聚=模块内两个元素之间的交互。

软件是由许多模块组成的。模块由元素组成。把一个模块看作一个程序。程序中的函数是一个元素。

在运行时,一个程序的输出被用作另一个程序的输入。这称为模块与模块之间的交互或流程与流程之间的通信。这也称为耦合。

在单个程序中,函数的输出被传递给另一个函数。这称为模块内元素的交互。这也被称为内聚。

例子:

耦合=两个不同家庭之间的交流…… 凝聚力=家庭中父亲、母亲和孩子之间的交流。