独立变分原理的新颖贡献

发布: (2025年12月17日 GMT+8 07:00)
7 min read
原文: Dev.to

Source: Dev.to

独立变异原理 (IVP)

结构定义

将具有不同变动驱动分配的元素分离为不同的单元;将具有相同变动驱动分配的元素统一到同一个单元中。

Source:

新的贡献

基础

此层认识到 现实:基于决策权的划分属性。

1. 划分属性

以往的原则说“分离关注点”,但没有具体说明关注点之间的关系。IVP 确立了独立的变更驱动因素 划分 领域知识:它们是互不重叠的(无交叉)且是穷尽的(无空缺)。每一块知识恰好属于唯一的驱动因素;如果看起来属于两个,则要么这些驱动因素并非真正独立,要么该知识需要被拆分。

2. 基于决策权的根基

早期的原则将分离基于技术标准(信息隐藏)、预测的变更(封装可变部分)或模糊的“职责”(单一职责原则)。IVP 将分离根植于 可观察的组织现实:谁拥有请求变更的权力?这将焦点从对未来技术演进的猜测转向映射现有的决策结构——这可以通过利益相关者访谈发现,而不是通过技术直觉预测。

逻辑

此层提供 规则:双条件、1/n 纯度尺度,以及关注因果关系而非结构关系。

3. 双条件 (IVP‑1 + IVP‑2)

大多数原则侧重于分离:“不要把不同的东西放在一起”。IVP 增加了同等重要的统一指令:“要把相同的东西放在一起”。双条件——元素当且仅当共享变更驱动时才共享同一模块——比单独的任一指令更强。它既禁止过度分离(关注点分散),也禁止不足分离(关注点混杂)。

4. 因果 vs. 结构内聚

传统的内聚度度量是结构性的:这些元素是否访问相同的数据?调用相同的函数?IVP 引入了 因果 内聚:这些元素是否因同一原因而变化?两个具有相同结构属性的元素可能拥有完全不同的因果关系。这一区别对静态分析是不可见的,却是可维护性的根本。

5. 纯度的离散性

IVP 揭示了内聚并非连续的。一个只有单一变更驱动的模块其纯度为 1;有两个驱动时,纯度降至 1/2;有三个时,降至 1/3。即使是微小的污染(例如 1 % 的外部知识)也会使结构纯度减半。这种离散性解释了为何架构债务会累积:第一次违规的代价远高于后续的线性增长。

The Action

该层的功能是 构建:从知识中推导元素,并区分必要的与偶然的杂质。

6. 必要的与偶然的杂质

IVP 并不要求所有模块只能有一个变更驱动。适配器、桥接器和协调器合法地服务于多个驱动。关键在于每个驱动是否 必要 于模块的目的。这一区分——即区分因必然性而不纯的模块与因偶然性而不纯的模块——能够解决对单一职责思维的表面反例。

7. 从知识中推导元素

元素并非随意发明;它们是从领域知识的划分结构中 推导 而来的。对于每个变更驱动的知识划分,创建能够体现该划分中所有知识的元素。这使软件结构根植于领域结构。

评估

该层的功能是 优化:目标函数。它对技术债务进行优先级排序,并衡量知识卫生。

8. 优先级的六个维度

IVP 提供了一个框架,用于决定 哪些 分离最为重要:

  1. 频率
  2. 规模
  3. 可预测性
  4. 可控性
  5. 范围
  6. 权威距离

并非所有 IVP 违规都同等紧急。这将 IVP 从二元判断(“合规或不合规”)转变为优先级改进路线图。

9. 知识定理

IVP 在知识组织与架构质量之间建立了正式的联系:

  • Cohesion 衡量模块在多大程度上完整地体现其关注点的知识。
  • Coupling 衡量有多少外部知识泄漏进来。

因此,“优秀的架构”成为知识卫生的问题,而非审美偏好。

结果

此层以宏大的统一结束:所有先前原则(信息隐藏、SOLID、DDD 等)的汇聚。

10. 先前原则的统一

IVP 表明信息隐藏、SRP、OCP、ISP、DIP、包‑架构原则、DDD 有界上下文、GoF 模式、EIP 模式等都是单一底层原则的实例化。它们不是需要相互平衡的独立指南;而是同一真理的不同视角。应用 IVP 可让其他原则自动得以遵循。

了解更多

本文应用了以下来源的独立变分原理框架:

Loth, Y. (2025). The Independent Variation Principle. Zenodo.
https://doi.org/10.5281/zenodo.17677316

Back to Blog

相关文章

阅读更多 »

里氏替换原则,育儿模型

《Liskov Substitution Principle, A Model for Parenting》封面图片 https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format...