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

我对耦合的理解是对的吗?

巫马刚洁
2023-03-14

我将尝试写一些关于软件耦合和内聚的想法,但我不确定它们是否有任何实际意义。所以,如果你想用例子来解释你的答案,请使用简单的代数表达式,想象代数是一种顺序编程语言,这样我们都能理解你在说什么。。。

在维基百科上阅读

以下是我想要相信的(这是正确的吗?):

'Implementation of A with Low Cohesion
'(Coincidental cohesion because there is no 
' good reason or need to group the functions
' in this way)
a(x) = 2x + 1
b(x) = 3x + 2
r(x) = a(x) + b(x) 

...

'Implementation of A with High Cohesion (Almost Atomic)
r(x) = 5x + 3

...

'Implementation of A with Low Cohesion too
a(x) = 2x + 1
r(x) = a(x) + 3x + 2

...

'Implementations of A with Functional Cohesion
a(x, y) = x * y   'Groups multiplication
b(x, y) = x + y   'Groups addition
r(x) = b(a(5,x), 3)

共有3个答案

杨飞飙
2023-03-14

简单来说,耦合表示一个类与程序中其他类的连接数。它拥有的越多,耦合就越高。理想情况下,越少越好。

鲁俊友
2023-03-14

再读一点(多亏了凯德·珀金斯),看起来我错了。

这些例子实际上是关于凝聚力的(根据维基百科):

'Implementation of A with Low Cohesion
'(Random cohesion because there is )
' no reason to group the functions
' in this way)
a(x) = 2x + 1
b(x) = 3x + 2
r(x) = a(x) + b(x) 

...

'Implementation of A with High Cohesion (Almost Atomic)
r(x) = 5x + 3

...

'Implementation of A with Another Random Cohesion
a(x) = 2x + 1
r(x) = a(x) + 3x + 2

...

'Implementation of A with Functional Cohesion
a(x, y) = x + y       ' Groups Addition
b(x, y) = x * y       ' Groups Multiplications
r(x) = a(b(5, x), 3)
江雅懿
2023-03-14

有趣的观点,你正在正确的道路上理解更大的概念。既然你引用了维基百科的文章,你认为你的例子代表了列出的十种耦合类型中的任何一种吗?

我知道也许你的例子可以表示数据和/或消息耦合,但仅此而已,因为基本代数语句不维护状态(例如存储值)。

首先要意识到,这个简单的代数最终将过于简单,无法表示软件开发中所有重要的耦合模式。我建议立即向函数中添加多个变量,并使用不同的变量名等,以增加函数卷积的可能方式。

为了说明其他一些耦合模式,您至少需要某种方法来存储值并引用以前存储的值。。。我们在解决代数问题时都会做一些事情,但不是用通用语法或结构教授的。(回想一下便笺和空白处的工作问题来解决问题?可能没有人教过你这样做的严格制度,也没有人教你每个人都遵循的制度。)当您开始向示例中添加这些特性来演示不同的耦合时,您基本上会得到一种与您自己的编程语言等效的功能。根据您的意图,这可能是一个非常值得的、令人愉快的练习,但您也可能会发现,尝试用现有语言表示耦合类型在学习概念方面更有效。

 类似资料:
  • 本文向大家介绍什么是耦合?相关面试题,主要包含被问及什么是耦合?时的应答技巧和注意事项,需要的朋友参考一下 组件之间依赖关系强度的度量被称为耦合。好的设计总是高内聚和低耦合的。

  • 问题内容: 我一直对会话在内部的工作方式感兴趣,但是我对C的知识很少(并且不确定在PHP源代码中的位置)。 这是我目前对会话的了解: 当您启动会话时,将为用户分配一个会话ID,该ID存储在cookie中。 会话数据保存(通过)后,将与相关的会话ID和到期时间一起存储在文件系统中。 它是否正确?另外,创建会话ID的方法是什么?我认为这是基于时间的,但是如果两个用户同时发送请求该怎么办?内部采用什么方

  • 本文向大家介绍Java中的耦合,包括了Java中的耦合的使用技巧和注意事项,需要的朋友参考一下 耦合是指另一个对象对一个对象的使用。也可以称为协作。一个对象与另一个对象之间的依赖关系可以完成一些任务,可以分为以下两种类型: 紧密耦合 -当对象创建要使用的对象时,则为紧密耦合情况。由于主要对象创建了对象本身,因此无法从外部将其更改为易于将其标记为紧密耦合的对象。 松散耦合 -当对象从外部获取要使用的

  • 在Phrudhvi对这个问题的优雅回答中,什么是伪多项式时间?它与多项式时间有何不同?在许多其他要点中,我们指出,在时间复杂度的真实形式定义下,其示例算法的TC在x中是指数的。 我理解答案中的所有内容,除了这里的这一点。在答案中,他的例子alg是O(n^4)。然后,他指出TC的形式定义是基于表示n所需的位数。因此,我希望他说TC将是O(x),其中x是位数。相反,他说它是O(2^4x)。 我知道我为

  • 本文向大家介绍你对微服务是怎么理解的?相关面试题,主要包含被问及你对微服务是怎么理解的?时的应答技巧和注意事项,需要的朋友参考一下 微服务,又名微服务架构,是一种架构风格,它将应用构建为一个小型自治服务的集合,以业务领域为模型。 通俗地说,就像蜜蜂通过对蜡制的等边六角形单元来构建它们的蜂巢。 他们最初从使用各种材料的小单元开始,一点点的搭建出一个大型蜂巢。 这些小单元组成坚固的结构,将蜂窝的特定部

  • 我正在阅读Scala Cookbook(http://shop.oreilly.com/product/0636920026914.do) 有一个与未来使用相关的例子,涉及理解。 到目前为止,我对理解的理解是,当与一个集合一起使用时,它会产生另一个相同类型的集合。例如,如果每个< code>futureX的类型为< code>Future[Int],则以下内容也应为< code>Future[In