📅  最后修改于: 2023-12-03 14:57:51.164000             🧑  作者: Mango
在软件工程中,耦合和内聚是两个重要的概念,它们分别描述了模块之间的关系和单个模块内部的结构。在我们设计和开发软件的过程中,理解和掌握这两个概念是非常重要的。
耦合(Coupling)用于描述模块之间的依赖关系,即一个模块对另一个模块的了解程度。模块的依赖会导致修改一个模块会对其它模块产生影响,从而导致软件的维护困难和复杂性增加。我们希望模块之间最小化依赖,使得系统更容易维护复用和测试。
在耦合方面,软件工程中一般分为以下几个不同等级的耦合:
无耦合意味着两个模块之间没有任何依赖关系,它们互相独立。这种关系是最优的,因为它允许我们修改单个模块而不会影响其它模块。
如果两个模块只是通过少量的数据和函数来交互,那么这种耦合是弱的。这种关系比无耦合含义略微多,但仍然是理想的。
如果模块之间有一些共享数据或者使用了共同的资源,则它们之间的耦合度是中等的。这种关系可能导致某个模块的行为受到另一个模块的影响。
如果模块之间相互依赖,即在一个模块中做的修改将在另一个模块中产生连锁反应,则这种耦合是强耦合。这种关系是极为不良的,因为它使得代码的维护和修改极为困难。
循环耦合是指模块之间形成了环状依赖,其中一个模块依赖于另一个模块,而另一个模块又依赖于第一个模块。这种关系极为不健康,应该尽可能地避免。
内聚(Cohesion)用于描述模块内部的结构,即一个模块内部的各个部分之间的联系程度。高内聚度意味着模块的功能更加紧密关联,这样的模块能够更快速、更可靠地工作。
在内聚方面,软件工程中一般分为以下几个不同等级的内聚:
偶然内聚是指一个模块包含了几个没有任何关系的任务。这种内聚度最低。
弱内聚是指一个模块包含了几个有一定关系的任务。这种内聚度比偶然内聚度高,但仍然不够紧密。
如果一个模块包含了几个相关任务并且它们在数据和功能上有共同点,那么这种内聚度是中等的。
如果一个模块包含了几个高度相关的任务,那么这种内聚度是很强的。这种关系是理想的,因为它可以提高模块的可靠性和可维护性。
最强内聚是指一个模块只包含了一个任务。这种内聚度最高。
耦合和内聚是软件工程中非常重要的两个概念。我们需要理解和掌握这些概念,以便正确地设计和实现我们的软件系统。通过减少耦合度和增加内聚度,我们可以创建更健壮、可维护和可复用的代码。
注:以上内容参考自 [耦合和内聚 (umd.js.org)](https://umdjs.org/articles/coupling-and-cohesion.html)