知识卡片

与主序列的距离:抽象性与不稳定性的平衡

普通读书笔记卡 · 1844

内容

代码库健康度可以用两个指标交叉衡量:抽象性(抽象类和接口占比,越高越好理解但可能过度设计)和不稳定性(对外部依赖的敏感程度,越高越容易被别人的变更连累)。把两者画在坐标系里,理想状态落在一条对角线上;偏右上角说明抽象太多、脱离实现的”无用区”,偏左下角说明具体实现太多、牵一发动全身的”痛苦区”。这套指标能提前暴露哪些模块该重构,而不必等出问题才后知后觉。

参考来源

- 位置:《演进式架构(原书第2版)》第4章《自动化架构治理》4.2节「基于代码的适应度函数」抽象性/不稳定性/与主序列的距离三小节(源文件:_epub-src/EPUB/xhtml/chapter08.xhtml) - 结论依据:原文明确抽象性、不稳定性两个指标的定义,以及归一化的与主序列的距离将两者结合、划分无用区与痛苦区,直接支持卡片论点。 - 原始内容:"抽象性是抽象组件(抽象类、接口等)与具体组件(实现类)的比率……不稳定性,它是传出耦合与传出耦合和传入耦合之和的比率……落入右上角过远的组件进入了架构师称为无用区的区域:过度抽象的代码变得难以使用。相反,落入左下角的代码则进入了痛苦区:实现过多、抽象过少的代码变得脆弱且难以维护"