如何判断架构设计的优劣?( 二 )


通过该耦合度测量公式,我们鼓励依赖外部成熟模块 。理论上,完全成熟的模块可能仅限于语言内置的数据类型(如int、string等) 。其他模块则多多少少会受到一些变化的影响,因此我们应尽量减少外部依赖 。
需要注意的是 , 将模块接口引用的类型A改为object或interface{}类型并不能降低耦合度 。换句话说,如果某参数为interface,那么这个interface的耦合度取决于实际使用时存在的各种可能类型,都会计算在依赖中 。
关于耦合度测量公式 , 需要强调的是,它是一种经验公式,仅代表某种价值主张 。在实际应用中 , 计算得到的具体耦合度值并没有物理意义,只能用于比较两个相同功能的系统(或模块)的架构设计方案 。对于两个功能完全不同的系统(或模块)A、B,其计算结果不能用于评判彼此的好坏 。
首先 , 我们讨论了架构设计的基本准则,它们为我们提供了一个方向 。虽然这些准则不能明确指出何为好与不好,但它们指明了我们设计架构的方向 。接着,我们开始对架构的优劣进行定性甚至定量的分析 。考虑到核心系统的重要性,我们引入了一个伤害值来评估其纯洁度 。
最后,我们针对模块自身的接口或实现,给出了耦合度测量公式 。通过这些公式 , 我们明确了我们的架构设计的价值主张 。然而,需要意识到的是,这些并不是全部 。判断模块间的耦合度是复杂的 。我们的公式在某种程度上只考虑了静态依赖关系,而没有考虑动态依赖 。举例来说,考虑两个网络模块A和B,一个显而易见的耦合度判断是:A调用B的网络接口数量越多,说明它们之间的依赖越大;而A调用B的网络接口的次数越多 , 也意味着它们之间的依赖越大 。

【如何判断架构设计的优劣?】


推荐阅读