Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.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专家都可以看看我的代码,并向我解释哪些方面是好的,哪些方面是坏的。我一点也不介意自己换。只是许多人似乎彼此不同意,我发现很难真正理解应该遵循什么原则……我可以推荐艾伦和詹姆斯的书(ISBN-13:978-0321247148): 这是一本关于has-a和is-a决策的好书,包括面向对象设计中的内聚和耦合。我可以推荐Alan和James的书(ISBN-

虽然在这个论坛上有很多很好的例子,其中包含耦合和内聚的例子,但我正在努力将其完全应用到我的代码中。我可以识别代码中可能需要更改的部分。任何Java专家都可以看看我的代码,并向我解释哪些方面是好的,哪些方面是坏的。我一点也不介意自己换。只是许多人似乎彼此不同意,我发现很难真正理解应该遵循什么原则……

我可以推荐艾伦和詹姆斯的书(ISBN-13:978-0321247148):


这是一本关于has-a和is-a决策的好书,包括面向对象设计中的内聚和耦合。

我可以推荐Alan和James的书(ISBN-13:978-0321247148):


这是一本关于has-a和is-a决策的好书,包括面向对象设计中的内聚和耦合。

首先,我想说的是,你得到如此不同答案的主要原因是,随着时间的推移,这确实成为一门艺术。你得到的许多意见并不是归结为一个严格的规则或事实,更多的是归结为一般的经验。在做了10-20年后,你开始记得你做了什么导致疼痛的事情,以及你是如何避免再次做这些事情的。许多答案对某些问题有效,但个人的经验决定了他们的观点

我只想在你的代码中改变一件非常重要的事情。我会考虑一下所谓的指挥模式。这方面的信息应该不难在网上或GoF的书中找到

其基本思想是,每个命令“addchild”、“addparent”都成为一个单独的类。单个命令的逻辑包含在一个易于测试和修改的小类中。然后,应该“执行”该类以从主类执行工作。这样,您的主类只需处理命令行解析,并且可能会丢失有关FamilyTree的大部分知识。它只需要知道哪些命令行映射到哪些命令类并启动它们


这是我的2美分。

首先,我想说,你得到如此不同答案的主要原因是,随着时间的推移,这确实成为一门艺术。你得到的许多意见并不是归结为一个严格的规则或事实,更多的是归结为一般的经验。在做了10-20年后,你开始记得你做了什么导致疼痛的事情,以及你是如何避免再次做这些事情的。许多答案对某些问题有效,但个人的经验决定了他们的观点

我只想在你的代码中改变一件非常重要的事情。我会考虑一下所谓的指挥模式。这方面的信息应该不难在网上或GoF的书中找到

其基本思想是,每个命令“addchild”、“addparent”都成为一个单独的类。单个命令的逻辑包含在一个易于测试和修改的小类中。然后,应该“执行”该类以从主类执行工作。这样,您的主类只需处理命令行解析,并且可能会丢失有关FamilyTree的大部分知识。它只需要知道哪些命令行映射到哪些命令类并启动它们


那是我的2美分。

简言之:

软件工程中的内聚性,就像在现实生活中一样,是指组成一个整体的元素(在我们的例子中,让我们说一个类)可以说是它们实际上属于一起的。因此,它是衡量软件模块的源代码所表示的每一项功能的相关性有多强的一个指标

从OO的角度来看内聚的一种方法是,类中的方法是否使用任何私有属性

现在的讨论比这更广泛,但高内聚性(或内聚性的最佳类型-功能性内聚性)是指模块的各个部分被分组,因为它们都有助于模块的单个明确定义的任务

简单地说,耦合就是一个组件(同样,想象一个类,尽管不一定)知道另一个组件的内部工作或内部元素的多少,即它对另一个组件有多少知识

松耦合是一种将系统或网络中的组件互连的方法,使这些组件相互依赖的程度尽可能低

长:


它详细讨论了这一切,并举例说明了为什么要遵循这些原则。我认为这会有帮助……

简言之:

软件工程中的内聚性,就像在现实生活中一样,是指组成一个整体的元素(在我们的例子中,让我们说一个类)可以说是它们实际上属于一起的。因此,它是衡量软件模块的源代码所表示的每一项功能的相关性有多强的一个指标

从OO的角度来看内聚的一种方法是,类中的方法是否使用任何私有属性

现在的讨论比这更广泛,但高内聚性(或内聚性的最佳类型-功能性内聚性)是指模块的各个部分被分组,因为它们都有助于模块的单个明确定义的任务

简单地说,耦合就是一个组件(同样,想象一个类,尽管不一定)知道另一个组件的内部工作或内部元素的多少,即它对另一个组件有多少知识

松耦合是一种将系统或网络中的组件互连的方法,使这些组件相互依赖的程度尽可能低

长:

它详细讨论了这一切,并举例说明了为什么您应该遵循