当前位置: 首页 > 知识库问答 >
问题:

内聚和耦合——如何确定阈值?

衡翰翮
2023-03-14

目前,我将进一步介绍java类,这是该类如何简要定义的:

内聚:以高内聚为目标,在这种情况下,内聚意味着单个模块紧紧关注其任务。

耦合:以低耦合为目标,在这种情况下,耦合意味着两个或多个模块相互交织的程度。

如何确定凝聚力和耦合度的水平?

例如,我的一些方法调用了同一类中的其他方法。这意味着调用其他方法的方法依赖于其他方法,以便“调用”方法完成其代码块。这是否意味着我对同一类的方法具有低内聚和高耦合?或者这些概念更多地指不同的类和不同的包?

共有3个答案

司空学智
2023-03-14

我可能错了,但这里只是我的一点微薄的意见。

衔接经常与耦合一起被提及,但它们之间的关系是相反的。高内聚=低耦合。

让我引用你的话

以高内聚性为目标,在本例中,内聚性意味着单个模块紧密关注其任务。

所以它的意思就是这样。只做一件事而且做得很好的东西。例如,将一个实体保存到数据库的方法应该只关注如何将该实体保存到数据库,而不应该担心该实体的正确性(该实体的所有实例属性是否都通过了所有数据库模式验证,在这种情况下,该验证可能应该由拦截器处理)。

耦合指的是两个模块相互依赖的程度,最少越好,因为它促进了维护和可重用性等。通常,低耦合是通过使用事件来实现的,我们有事件发射器和事件消费者,他们不必相互了解。即使发射器也只是解雇并忘记,当系统将事件传递给消费者时,消费者会接受事件。

沙柏
2023-03-14

有内聚/耦合的指标;看见https://softwareengineering.stackexchange.com/questions/151004/are-there-metrics-for-cohesion-and-coupling.

因此,“确定”内聚/耦合水平的方法是实现一个工具,该工具可以测量相应的指标。(或者找到一个现有的工具,例如声纳。)

如何确定内聚和/或耦合水平的阈值?

我猜你是说。。。如何决定何时在代码库中将各个度量的值称为“不可接受”。

基本上,这取决于你的决定。我会通过查看工具报告“坏”值的示例来完成这项工作,并确定我认为它真的有多坏。或者,坚持使用您正在使用的工具中的默认阈值。

微生善
2023-03-14

内聚和解耦在各个层面都很重要:每一行代码都应该有特定的含义和目的,每一种方法都应该有特定的含义和目的,每一个类都应该有特定的含义和目的,每一个包都应该有特定的含义和目的,每一个代码库都应该有特定的含义和目的。

这并不意味着一个方法不应该调用另一个方法,一个类不应该使用另一个类,等等。;相反,这意味着理想情况下,您应该能够阅读和理解一个方法,而不必阅读它调用的所有其他方法;阅读和理解一个类,而不必阅读它使用的所有其他类,等等。

这就是说,我们希望更大的单元具有更大的内聚性和解耦性:例如,类需要比方法更内聚、更不紧密地耦合,因为假设类的大小合理,在阅读和维护代码时,在方法之间来回比在类之间来回要容易得多。

 类似资料:
  • 在一次技术采访中,我被问及项目的凝聚力和耦合性。我详细解释了它们的定义,尽管我没有像他说的那样正确回答问题的第二部分。 “我们如何在一个项目中同时实现高度内聚和松散耦合的设计,请解释这种方法应该如何在一个整体项目中实现?” 我回答说这两个目标是矛盾的,所以我们需要找出每个项目或模块的最佳选择,但我无法提供全面的答案。 如果有人能帮我,我将不胜感激。

  • 假设方法和的责任密切相关 第一个例子: 如果 •和在class中定义(因此class具有高度的内聚性) •类别使用和类别使用 然后 •与和类耦合 •更改的签名只需要更改,而不需要更改 第二个例子: 如果 •在类中定义(因此与耦合) •用类定义(因此与耦合) 然后 •更改的签名只需要更改,而不需要更改 a) 据我所知,上一个例子中的类与第一个例子中的类并不耦合!还是我错过了什么? b) 据我所知,第

  • 本文向大家介绍什么是耦合和凝聚力?相关面试题,主要包含被问及什么是耦合和凝聚力?时的应答技巧和注意事项,需要的朋友参考一下 组件之间依赖关系强度的度量被认为是耦合。一个好的设计总是被认为具有高内聚力和低耦合性。 面试官经常会问起凝聚力。它也是另一个测量单位。更像是一个模块内部的元素保持结合的程度。 必须记住,设计微服务的一个重要关键是低耦合和高内聚的组合。当低耦合时,服务对其他服务的依赖很少。这样

  • 我应该写两个版本的相同代码。一个具有低耦合和高内聚,另一个仍然具有低耦合,但这次具有低内聚。我真的不明白有什么区别?我怎么可能有低耦合和低内聚?它们似乎如此相关,以至于这是不可能做到的。 有人能解释一下吗?也许用一个例子?谢谢。

  • 我在理解语句。我已经在谷歌上搜索并阅读了很多关于这方面的内容,但仍然觉得很难理解。 据我所知,高内聚意味着我们应该有专门的类来执行特定的功能。希望这是正确的?就像信用卡验证类一样,它专门用于验证信用卡。 还不明白低耦合是什么意思?

  • 我最近参加了一次设计原理考试 据我所知,内聚性是指一个类/模块如何专注于解决它创建时要解决的问题,或者更好地说,它在完成it工作方面有多出色。它做了不该做的工作吗?然后将该部分移动到另一个类/模块。 耦合是许多类/模块之间的依赖程度。这意味着,无论我们是否对不同的模块/类进行重大更改,一个好的类/模块都会起作用。 我曾经这样向自己解释:调酒师的工作是煮咖啡和其他饮料。一个好的调酒师应该做好自己的工