49 lines
1.8 KiB
Markdown
49 lines
1.8 KiB
Markdown
---
|
||
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]]
|