现在我将进一步介绍java类,下面是这个类对此的简要定义:
Cohesion:目标是高内聚,在这种情况下,cohesion意味着单个模块紧密地集中在其任务上。
耦合:目标是低耦合,在这种情况下,耦合指的是两个或多个模块相互交织在一起的程度。
如何确定内聚性和耦合性的级别?
例如,我的一些方法调用同一类中的其他方法。这意味着调用其他方法的方法依赖于其他方法,以便“调用”方法完成其代码块。这是否意味着我对同一个类的方法具有低内聚性和高耦合性?或者这些概念更多地指的是不同的类和不同的包?
发布于 2017-01-26 15:41:08
内聚和解耦在所有级别都很重要:每行代码都应该有特定的含义和用途,每个方法都应该有特定的含义和用途,每个类都应该有特定的含义和用途,每个包都应该有特定的含义和用途,每个代码库都应该有特定的含义和用途。
这并不意味着一个方法不应该调用另一个方法,一个类不应该使用另一个类,等等;相反,这意味着在理想情况下,您应该能够读取和理解一个方法,而不需要读取它调用的每个其他方法,读取和理解一个类而不需要读取它使用的每个其他类,等等。
也就是说,对于更大的单元,我们期望更大的内聚力和解耦:例如,类需要比方法更内聚,更少紧密耦合,因为假设您的类的大小合理,在读取和维护代码时,您可以在方法之间来回切换,而不是在类之间来回切换。
发布于 2017-01-26 15:39:37
有内聚/耦合的度量标准;请参阅https://softwareengineering.stackexchange.com/questions/151004/are-there-metrics-for-cohesion-and-coupling。
因此,“确定”内聚/耦合级别的方法是实现一个测量相应指标的工具。(或者找到一个现有的工具来做这件事。例如,Sonar。)
如何确定内聚和/或耦合级别的阈值?
我猜你的意思是..。您如何决定何时在代码库中将各个指标的值称为“不可接受的”。
基本上,这是由您决定的。我会通过查看工具报告“坏”值的示例来做这件事,并决定我认为它到底有多坏。或者,坚持使用您正在使用的工具中的默认阈值。
发布于 2017-01-26 15:42:25
我可能错了,但这里只是我的谦虚的输入。
内聚通常与耦合一起被提及,但它们具有相反的关系。高内聚==低耦合。
让我引用你的话
的目标是高内聚力,在这种情况下,内聚力意味着单个模块紧密地专注于其任务。
所以它就是这样的意思。只做一件事,而且做得很好的东西。例如,将实体保存到数据库的方法应该只关注如何将该实体保存到数据库中,而不应该担心该实体的正确性(是否所有实体实例属性都通过了所有数据库模式验证,在这种情况下,这种验证应该由拦截器处理)。
耦合指的是两个模块相互依赖的程度,越少越好,因为它促进了维护和可重用性等。通常情况下,低耦合是通过使用事件实现的,我们有事件发送者和事件消费者,它们不需要了解彼此的任何信息。即使是发射器,当系统将事件传递给他们时,fire-and-forget,和消费者也会接受事件。
https://stackoverflow.com/questions/41868654
复制相似问题