第 2 章:务实的方法
系列:程序员修炼之道 · 第 2/9 章
一句话总结
优秀设计让变更更容易;用 DRY、正交、可逆性控制变化,用曳光弹与原型降低风险,用领域语言与估算对齐现实。
核心观点浓缩
- 优秀设计的精髓:好设计比坏设计更容易改
- DRY:每一条知识在系统中应有单一、明确、权威的表示
- 正交性:修改一项不应影响无关项;消除隐性耦合
- 可逆性:没有最终决定;延迟绑定、保留选项
- 曳光弹:端到端可运行的薄骨架,快速获得反馈
- 原型与便签:学习用的可抛弃实现,与曳光弹目的不同
- 领域语言:用问题域词汇编程,减少翻译损耗
- 估算:量化不确定性;根据实际进度迭代计划
关键概念 / 金句
| 概念 | 区别 |
|---|---|
| DRY | 去的是知识重复,不是形似代码 |
| 曳光弹 | 要保留、要演进的可运行系统 |
| 原型 | 探索后丢弃或重写 |
| 正交 | 与单一职责、低耦合同族 |
本章在全书中的位置
全书技术设计观的核心章。第 5 章解耦、第 7 章重构,都是 DRY/正交的具体延伸。
个人思考与启发
新扫描流程上线:先曳光弹「假数据 → 最小 UI → 一次导出」,再填真实设备与算法,比六个月闭门造车稳。
DRY 实践:连接失败提示、日志上传、防火墙预检若三处各写一套字符串与分支,应抽到 ConnectionDiagnostics 一类模块——知识一处维护。
与《软件设计的哲学》对照
- DRY ↔ 减少重复依赖(Ousterhout 红旗「重复」)
- 正交 ↔ 信息隐藏、模块边界清晰
- 曳光弹 + design it twice:先跑通再深化接口设计
- 领域语言 ↔ 命名与抽象层一致(第 14、18 章)
重点与注意
重点:DRY、正交、可逆性 是应对变化的三件套。
重点:曳光弹 ≠ 原型;前者演进,后者学习后常抛弃。
重点:设计优劣的试金石:变更是否更容易。
注意:复制粘贴两行相似代码不一定违反 DRY,若代表不同知识可保留。
注意:可逆性不是永不决策,而是可回退、可替换。
导航:上一篇:第 1 章 · 下一篇:第 3 章 基础工具