知识卡片
分离性比耦合性更广,源于人类的秩序需求而非计算机需求
内容
耦合性(数据耦合、特征耦合、控制耦合、外部耦合、公共耦合、内容耦合等)指的是两个功能模块之间不同形式的依赖关系,解耦就是消除或减轻这种依赖,让模块能独立开发测试维护。分离性的概念比耦合性更简单直观——代码中不同的部分应该相互分隔开,而不应该混在一起;区分”不同的部分”可以用关注点来划分,常见关注点包括技术或业务、变化的速率、操作类型、生命周期,也包括耦合性里的数据、特征、控制等——所以分离性的范围比耦合性更广,耦合性只是分离性的一个子集。生活中类似的例子随处可见:把衣服、袜子、帽子和鞋子分开存放,甚至按颜色再细分;电脑里按文档、音乐、视频分类建文件夹——这类简单分离行为能让事物更有序、后续操作更容易。这里有一个容易被忽略的关键点:分离性主要是基于人类自身对有序事物的需求而设计的,而不是计算机的需求——对计算机来说,一切事物都只是0和1的组合,根本不存在”整齐”或”混乱”的差异;把代码不同部分有序区分开,避免的是后续人在修改代码、或把代码交接给别人时出现的混乱,而不是为了让程序跑得更快。可迁移启发:评审一段代码的”结构是否合理”时,可以直接把标准换成”如果一个新人或者半年后的自己回来读这段代码,能不能快速分辨出哪部分是业务、哪部分是技术、哪部分容易变、哪部分很稳定”——这比抽象地谈”耦合度高不高”更贴近分离性真正要解决的问题。
参考来源
- 位置:《架构师启示录:知识模型、落地方法与思维模式》第8章《系统实现》之"8.1.1 分离性是什么"(源文件:_epub-src/EPUB/xhtml/chapter12.xhtml)
- 结论依据:原文说明"分离性主要是基于人类自身对有序事物的需求而设计的,而不是计算机的需求,因为对计算机来说,什么事物都是0和1的组合……当我们将代码中不同的部分有序地区分开后,可以避免在后续修改或交接给他人时出现混乱", 直接支撑本卡关于分离性本质及其与人类秩序需求关系的结论。
- 原始内容:可以说,分离性是实现高质量代码的最基本要求。