Files
nexus/wiki/concepts/MinimalChangePrinciple.md
2026-05-03 05:42:12 +08:00

49 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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]]