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

什么时候提高程序内聚会恶化耦合?

伍耀
2023-03-14

我最近参加了一次设计原理考试

据我所知,内聚性是指一个类/模块如何专注于解决它创建时要解决的问题,或者更好地说,它在完成it工作方面有多出色。它做了不该做的工作吗?然后将该部分移动到另一个类/模块。

耦合是许多类/模块之间的依赖程度。这意味着,无论我们是否对不同的模块/类进行重大更改,一个好的类/模块都会起作用。

我曾经这样向自己解释:调酒师的工作是煮咖啡和其他饮料。一个好的调酒师应该做好自己的工作,那就是煮咖啡,这会增强他的凝聚力,但如果他开始拖地板和服务顾客,他就脱离了他的工作,从而失去了凝聚力。一个好的调酒师也不应该受到其他员工的影响,这意味着他的耦合度很低。换句话说,如果清洁工某天早上不来上班,他的工作应该不会受到影响。

因此,如果我的理解是正确的,这意味着增加凝聚力不应该对耦合产生负面影响,就像告诉酒保更多地关注咖啡不会让他更依赖清洁女工一样。

我错过什么了吗?我对内聚/耦合的理解有缺陷吗?抱歉读了这么久!

共有1个答案

荆鸿畅
2023-03-14

如果酒吧的工作人员非常团结,他们就知道彼此的工作,并且可以作为一个团队更有效地工作。例如,鸡尾酒女服务员可能知道酒保喜欢在哪里拿回脏盘子(洗碗机附近的酒吧部分),因此女服务员会在那里放下空杯子。或者,经理可能会注意到调酒师的冰块越来越少,于是就到房子后面去拿更多的冰块,然后在没有人要求的情况下重新加满。

当然,通过了解彼此的工作,员工们现在更加紧密地联系在一起。这可能意味着过程中的任何变化都会影响更多的人,并造成培训问题。例如,如果酒吧决定从立方冰转向碎冰,经理必须被告知,否则他可能会得到错误的冰。如果团队松散地联系在一起,只有酒保需要知道。

从这个例子中,你可以看到一个非常有凝聚力的团队需要了解彼此的工作,这使得改变任何一份工作都变得更加困难。这与软件中紧密耦合的模块造成的可维护性问题相对应。它很方便,可以让模块更紧密地协同工作,但如果情况发生变化,就会产生问题。

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

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

  • 问题内容: 在我用php开发的所有年份中,我一直都听说使用是邪恶的。 考虑以下代码,使用第二个(更优雅)的选项是否有意义?如果没有,为什么? 问题答案: 在将eval()称为纯邪恶时,我会保持谨慎。 动态评估是一个强大的工具,有时可以节省生命。使用eval()可以解决PHP的缺点(请参见下文)。 eval()的主要问题是: 潜在的不安全输入。 传递不受信任的参数是一种失败的方法。确保参数(或其一部

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

  • 最近,在运行我们的应用程序时,我们遇到了内存溢出异常。 这是异常发生之前的堆转储 看起来老根差不多吃饱了(76%)。我假设当它最终达到100%时,OOM就会发生。然而,看起来eden只有13%。 有人能解释为什么即使年轻一代还有一些空间,OOM也会发生吗?

  • 在学习了并发之后,我一直计划在项目中使用并发。现在我没有在多线程或并发上做太多工作,所以决定在实际项目中使用它之前学习并进行一个简单的概念验证。 以下是我尝试过的两个例子: 现在,在每种方法运行了20多次之后进行分析 第一次并发平均需要451毫秒 第二个无并发的平均时间为290毫秒 现在我了解到这取决于配置、操作系统、版本(java7)和处理器。但这两种方法都是一样的。还了解到,当计算量很大时,并