我试图将耦合和内聚的概念归结为一个简洁的定义。有人能给我一个简短易懂的解释吗(比维基百科上的定义更短) 这里这里)?他们如何互动?

谢谢。

有人有一个好的简短的例子吗?

有帮助吗?

解决方案

耦合

  • 松动的:你和便利店里的那个人。你们通过明确的协议进行沟通,以实现各自的目标——你付钱,他让你带着一袋奇多走出去。可以在不破坏系统的情况下更换你们中的任何一个。

  • 紧的:你和你的妻子。

凝聚

  • 低的:便利店。从汽油到牛奶再到 ATM 银行业务,您都可以去那里购买各种东西。产品和服务几乎没有共同点,将它们全部集中在一处所带来的便利可能不足以抵消由此带来的成本增加和质量下降。

  • 高的:奶酪店。他们卖奶酪。没有其他的。但就奶酪而言,无法击败他们。

其他提示

耦合 - 衡量一个模块(包、类、方法)对其他模块的依赖程度。人们希望减少耦合,或者减少给定模块对系统其他模块的依赖程度。

内聚性 - 模块的成员(类、方法、方法内的功能)与同一模块的其他成员的相关程度的度量。增加内聚性是可取的,因为这表明模块具有非常具体的任务并且只执行该任务。

Bertrand Meyer 的著作是与 OO(包括这些概念)相关的软件设计概念最全面的讨论之一。 面向对象的软件构建.

关于“耦合”,他给出了他的弱耦合/小接口规则如下:

如果两个模块进行通信,它们应该交换尽可能少的信息。

迈耶关于凝聚力的材料从未被归结为一个简洁的陈述,但我认为这句话来自史蒂夫·麦康奈尔的 代码完成 总结得很好:

内聚性是指类中的所有例程或例程中的所有代码支持中心目的的紧密程度

耦合意味着对他人的依赖。
凝聚力意味着其自身的完整性。

测量耦合的一种快速而简单的方法是测量你的 import (或类似的)陈述。

“耦合是对模块之间相互依赖性的量度,应该最小化”“内聚力,最大化的质量,重点是每个模块执行的活动之间的关系。”

引用这篇论文: http://steve.vinoski.net/pdf/IEEE-Old_Measures_for_New_Services.pdf

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top