我将尝试写一些关于软件耦合和内聚力的想法,但我不确定它们意味着什么实际的东西。所以,如果你想用例子来解释你的答案,请使用简单的代数表达式,把代数看作是一种顺序编程语言,这样我们都能理解你在说什么……
以下是我想要相信的(这是正确的吗?)
'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)发布于 2017-03-31 23:03:29
有趣的观点,你在正确的道路上理解更大的概念。既然您引用了Wikipedia的文章,那么您认为您的示例代表了列出的十种耦合类型中的任何一种吗?
我看到您的示例可能表示数据和/或消息耦合,但这是因为基本代数语句不维护状态(例如,存储值)。
首先,认识到这个简单的代数最终将过于简单化,无法表示软件开发中所有重要的耦合模式。现在,我建议在函数中添加多个变量,并使用不同的变量名等等,以增加函数可能的转换方式。
为了说明一些其他耦合模式,您至少需要一些方法来存储值和引用以前存储的值.我们都在解决代数问题时所做的事情,而不是用通用的语法或结构教授的东西。(回想一下划痕纸和空白处的工作问题来解决问题?也许没有人教你一个严格的系统来做这件事,或者每个人都遵循。)当您开始将这些特性添加到您的示例中来说明不同的耦合时,您最终将得到与您自己的编程语言相当的结果。根据您的意图,这可能是一个非常有价值和愉快的练习,但您也可能会发现,尝试用现有语言表示耦合类型,以便更有效地学习概念。
发布于 2017-04-01 00:50:50
读得再远一点(多亏了凯德·珀金斯),看来我错了。
这些例子实际上是关于凝聚力(维基百科的说法)的
'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)发布于 2021-08-12 11:16:46
在非常简单的术语中-耦合表示一个类与程序中其他类的连接数。它拥有的越多,耦合的程度就越高。理想情况下,越小越好。
https://stackoverflow.com/questions/43150481
复制相似问题