--- title: "MinimalChangePrinciple" type: concept tags: [engineering, code-quality, best-practices] last_updated: 2026-05-02 --- ## Definition 最小变更原则(MinimalChangePrinciple)是一种代码变更方法论:每个变更行的存在都必须有任务明确要求的理由,而非"更好""更整洁""为未来做准备"。目标是以最小可工作的差异集(minimum viable diff)完成给定任务。 ## Core Questions > "Does the task require this exact line?" 变更每一行之前,必须通过以下测试: 1. **必要性**:任务是否明确要求了这一行? 2. **最小性**:能否以更少的变更行达到同样效果? 3. **可解释性**:这一行变更对未来的代码维护者是否可理解? ## Contrast with Traditional Code Quality | 维度 | 传统观点 | 最小变更原则 | |------|---------|-------------| | 新增代码 | 越多越好(健壮性) | 越少越好(降低维护成本) | | 文档 | 应该详细添加 | 不为未修改代码添加文档 | | 重构 | 遇到问题就重构 | 与任务变更分离,独立 PR | | 防御性代码 | 宁多勿缺 | 仅在系统边界添加 | | 代码风格 | 统一风格 | 不为统一风格而修改无关代码 | ## Success Metrics - **Median diff size < 30 lines changed per task** - **80%+ bug fix PRs touch ≤ 2 files** - **Zero "while I'm here" changes in any PR** - **Review time reduced 50%+** - **Regression rate near zero** ## Connections - [[engineering-minimal-change-engineer]]:最小变更原则的具体实践者 - [[PrematureAbstraction]]:最小变更原则反对在第四次出现前提取抽象 - [[ScopeCreep]]:最小变更原则是对抗范围蔓延的核心策略 - [[engineering-code-reviewer]]:代码审查者是检验最小变更原则的最后一道防线 ## Sources - [[engineering-minimal-change-engineer]]