问题标签 [cohesion]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 提高类的凝聚力和耦合度
我得到了这组代码,需要提出改进代码内聚和类耦合的方法。但我认为这些类很好地解耦,因为看起来它们正在使用事件。就凝聚力而言,所有的 init() 调用都放在一起,对我来说一切都很好。
还有办法提高类的内聚和耦合吗?对我来说看起来不错,但我想我错过了一些东西。
感谢您对此提出任何建议。
design-patterns - DAO 模式是否会破坏凝聚力/SRP?
让我们作为例子:
有多少责任?1个还是4个?
oop - 在坚持 DRY 的同时保持低耦合
“保持高内聚和低耦合”(或一些变体)的口头禅经常被抛来抛去。但是,我发现它经常与“不要重复自己”相冲突。
例如,我认为我们都同意重新实现std::string
或使用 C 字符串是一件坏事,但不包括std::string
创建另一个依赖项并因此增加耦合?
再举一个例子,以std::stringstream
. 它继承自iostream
,继承自istream
and ostream
,继承自ios
,继承自ios_base
。在所有这些派生中,它继承了许多功能 - 足以使手动重新实现成为一个非常糟糕的主意。即使只包括在内,它也会拉动<ios>
和头,从而增加耦合。<istream>
<sstream>
如何在不为每个模块重新发明轮子的情况下保持低耦合?
编辑:如果这两个概念不能共存,应该偏爱哪一个?
coupling - 凝聚力VS。耦合
这个问题将软件视为一棵树,其中:
- 树中的每个节点代表一些代码单元(例如类\方法\行等)
- 如果在源代码中 X 设置在 Y 中,则节点 X 是节点 Y 的儿子
这里是术语 T 的定义:
相对于节点 X 的 T 是 X 上的任何更改将导致 X 的子树内的节点发生更改的概率。
T这个词是什么?内聚还是耦合?
coupling - 测量耦合和内聚的工具
你知道有什么工具可以帮助我们测量系统中的耦合和内聚吗?
java - 在这种情况下我需要制作自定义事件吗?
出于爱好,我正在制作游戏。游戏中有一个怪物追逐人类(类似吃豆人)。当吃豆人被卡住时,可以吃人或做一些动作;应该提出一个事件。这是因为我的程序变成了非循环,因为所有对象都必须相互了解,内聚有什么不好。
有一个类似对象(称为游戏)的控件,它应该响应事件;人类感动,怪物感动,人类吃掉,怪物卡住,最终让视图知道发生了什么事,所以它重新绘制。还有一点是,视图响应演员的按键,并且这些事件应该以某种方式(也通过事件)到达人类。
有人可以帮助我如何最好地解决这个问题吗?我已经在互联网上搜索了类似的问题,但没有遇到任何问题。
在 MVC 中:控制器知道视图吗?如果是这样:整个程序是从控制器开始还是从视图开始?(是什么造就了谁)
php - 通过对多个 RSS 提要重用 PHP 函数来增加凝聚力
如图所示,我的主页包含全球三个城市的天气
在主页中,我声明了 3 个变量,用于存储每个城市的 RSS URL
我从上面显示的三个 URL 中提取相同的标签,并使用除了传递给它的变量之外的 3 个相同的函数。
下面显示了传递给函数的变量。显然,在返回 $weather 之前使用了其他函数。
正如我所提到的,我当前重复此函数 3 次,只是替换了上面示例中传递的 $newYorkWeatherSource 变量。有什么想法可以重复使用此功能 3 次,但传递不同的 URL 以保持我的主页显示来自 3 个城市的天气?当然,如果每个城市都在单独的页面上表示,则很容易重用该功能,但目的是将它们放在一起以进行比较。
有任何想法吗?
提前致谢。
php - 重用 PHP 函数从 XML 文档访问数组项标签
我创建了一个网站,其中包含使用 XML 来驱动其一些内容,例如,如下所示的当前汇率。
该网站比较了三种汇率,我目前对每个执行相同目标的城市使用单独的函数,例如返回当前汇率。
这些函数之间的唯一区别是我从中请求数据的 XML 文档中 item 标记的位置。
注意 上面数组中的item[15],它提供了对欧元货币的访问。在下文中,美国货币是项目[56],如下所示。
如果可以将三个功能组合成一个功能以增加凝聚力,有什么想法吗?
我用于访问欧元货币的功能是:
提要 URL 设置在另一个名为 cityConfig.php 的配置脚本中
提前致谢
java - 处理大类
在过去的几个月里,我最近开始使用 Java 进行编码。我有一个 Matrix 类,它有很多方法,变得过于臃肿。我还有一个 SquareMatrix 类,它扩展了 Matrix,并减少了一些臃肿。
我发现 Matrix 类中的许多方法通常与矩阵相关。它具有所有基础知识,如 addMatrix(Matrix)、multiplyMatrix(Matrix)、multiplyMatrix(float),以及更复杂的方法,如 getGaussian(Matrix) 或 getLUDecomposition(Matrix)。
在减少班级矩阵中的行数方面,我有哪些选择?一个类变得非常大是正常的吗?我不这么认为......这是我应该尽早考虑的事情并且重构很困难吗?还是有简单的解决方案?
谢谢!
编辑:在阅读了几个回复后,我正在考虑执行以下操作:
实用程序类Matrix 包含矩阵的所有常用/基本方法
委托类(Helper/sub):
*助手类* getGaussian(..), getLUFactorization(..), ...
子类 (扩展矩阵)SquareMatrix、LowerTriMatrix、UpperTriMatrix、...
委派似乎类似于在 C++ 中定义多个带有标头的 .cpp 文件。仍然欢迎更多提示。
Edit2:另外,我更喜欢通过正确设计来重构,而不是快速修复。我希望它对未来的项目有所帮助,而不仅仅是这个。
cohesion - 什么是高内聚力以及如何使用/制造它?
我正在学习计算机编程,在几个地方我偶然发现了凝聚力的概念,我明白软件具有“高凝聚力”是可取的,但这意味着什么?我是一名 Java、C 和 Python 程序员,从《C++ Primer》一书中学习 C++,其中提到了内聚性,但没有在索引中包含它,你能给我指出一些关于这个主题的链接吗?我没有找到关于计算机科学凝聚力的维基百科页面,因为它只是说这是一种定性衡量标准,并没有给出真实的代码示例。