Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 内聚和耦合-如何确定阈值?_Java_Coupling_Cohesion - Fatal编程技术网

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

Java 内聚和耦合-如何确定阈值?,java,coupling,cohesion,Java,Coupling,Cohesion,目前,我将进一步介绍java类,这是该类如何简要定义的: 内聚性:以高内聚性为目标,在本例中,内聚性意味着单个模块紧密关注其任务 耦合:以低耦合为目标,在这种情况下,耦合意味着两个或多个模块相互缠绕的程度 如何确定内聚性和耦合性的水平 例如,我的一些方法调用同一类中的其他方法。这意味着调用其他方法的方法依赖于其他方法,以便“调用”方法完成其代码块。这是否意味着我对同一类的方法具有低内聚性和高耦合性?或者这些概念更多地指的是不同的类和不同的包吗?有内聚/耦合的度量标准;看 因此,“确定”内聚/耦合

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

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

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

如何确定内聚性和耦合性的水平


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

有内聚/耦合的度量标准;看

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

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

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


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

内聚和解耦在所有级别都很重要:每行代码都应该有特定的含义和目的,每个方法都应该有特定的含义和目的,每个类都应该有特定的含义和目的,每个包都应该有特定的含义和目的,每个代码存储库都应该有特定的含义和目的

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


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

我可能错了,但这只是我的拙劣输入

衔接经常和耦合一起被提到,但它们有着相反的关系。高内聚=低耦合

让我引用你的话

以高内聚性为目标,在这种情况下,内聚性意味着 模块紧紧地专注于它的任务

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


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

这是类/模块问题,而不是方法问题。谢谢!课堂笔记对此不是很清楚,所以我想确认一下。这些概念还有什么重要的东西我应该知道吗?干杯,按照我的措辞,你可能会发现我对Java还是很陌生…我确实读过IE软件工程师的Reddit AMA,他们提到有很多遗留代码…我的猜测是由于内聚和耦合的水平,但这也是我的经验不足,猜测比任何事情都多,我理解这些定义,基于我在工作中看到的东西(不是作为工程师,我是作为艺术家),游戏引擎中的逻辑在很大程度上依赖于火与忘的概念。我会进一步研究这个。。。