我将尝试写一些关于软件耦合和内聚的想法,但我不确定它们是否有任何实际意义。所以,如果你想用例子来解释你的答案,请使用简单的代数表达式,想象代数是一种顺序编程语言,这样我们都能理解你在说什么。。。
在维基百科上阅读
以下是我想要相信的(这是正确的吗?):
'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)
简单来说,耦合表示一个类与程序中其他类的连接数。它拥有的越多,耦合就越高。理想情况下,越少越好。
再读一点(多亏了凯德·珀金斯),看起来我错了。
这些例子实际上是关于凝聚力的(根据维基百科):
'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)
有趣的观点,你正在正确的道路上理解更大的概念。既然你引用了维基百科的文章,你认为你的例子代表了列出的十种耦合类型中的任何一种吗?
我知道也许你的例子可以表示数据和/或消息耦合,但仅此而已,因为基本代数语句不维护状态(例如存储值)。
首先要意识到,这个简单的代数最终将过于简单,无法表示软件开发中所有重要的耦合模式。我建议立即向函数中添加多个变量,并使用不同的变量名等,以增加函数卷积的可能方式。
为了说明其他一些耦合模式,您至少需要某种方法来存储值并引用以前存储的值。。。我们在解决代数问题时都会做一些事情,但不是用通用语法或结构教授的。(回想一下便笺和空白处的工作问题来解决问题?可能没有人教过你这样做的严格制度,也没有人教你每个人都遵循的制度。)当您开始向示例中添加这些特性来演示不同的耦合时,您基本上会得到一种与您自己的编程语言等效的功能。根据您的意图,这可能是一个非常值得的、令人愉快的练习,但您也可能会发现,尝试用现有语言表示耦合类型在学习概念方面更有效。
本文向大家介绍什么是耦合?相关面试题,主要包含被问及什么是耦合?时的应答技巧和注意事项,需要的朋友参考一下 组件之间依赖关系强度的度量被称为耦合。好的设计总是高内聚和低耦合的。
问题内容: 我一直对会话在内部的工作方式感兴趣,但是我对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)。 我知道我为
本文向大家介绍你对微服务是怎么理解的?相关面试题,主要包含被问及你对微服务是怎么理解的?时的应答技巧和注意事项,需要的朋友参考一下 微服务,又名微服务架构,是一种架构风格,它将应用构建为一个小型自治服务的集合,以业务领域为模型。 通俗地说,就像蜜蜂通过对蜡制的等边六角形单元来构建它们的蜂巢。 他们最初从使用各种材料的小单元开始,一点点的搭建出一个大型蜂巢。 这些小单元组成坚固的结构,将蜂窝的特定部
有如下的结构: 在src/actions/users.handlers.ts中需要引入相对路径: 但是我觉得这样它们(db/ 和 actions/)就耦合在一起了。 请问是否有一些设计的方式让它们解耦?比如:依赖反转等方式。