Skip to content

第 2 章:务实的方法

系列:程序员修炼之道 · 第 2/9 章


一句话总结

优秀设计让变更更容易;用 DRY、正交、可逆性控制变化,用曳光弹与原型降低风险,用领域语言与估算对齐现实。


核心观点浓缩

  • 优秀设计的精髓:好设计比坏设计更容易改
  • DRY:每一条知识在系统中应有单一、明确、权威的表示
  • 正交性:修改一项不应影响无关项;消除隐性耦合
  • 可逆性:没有最终决定;延迟绑定、保留选项
  • 曳光弹:端到端可运行的薄骨架,快速获得反馈
  • 原型与便签:学习用的可抛弃实现,与曳光弹目的不同
  • 领域语言:用问题域词汇编程,减少翻译损耗
  • 估算:量化不确定性;根据实际进度迭代计划

关键概念 / 金句

概念区别
DRY去的是知识重复,不是形似代码
曳光弹要保留、要演进的可运行系统
原型探索后丢弃或重写
正交与单一职责、低耦合同族

本章在全书中的位置

全书技术设计观的核心章。第 5 章解耦、第 7 章重构,都是 DRY/正交的具体延伸。


个人思考与启发

新扫描流程上线:先曳光弹「假数据 → 最小 UI → 一次导出」,再填真实设备与算法,比六个月闭门造车稳。
DRY 实践:连接失败提示、日志上传、防火墙预检若三处各写一套字符串与分支,应抽到 ConnectionDiagnostics 一类模块——知识一处维护。


与《软件设计的哲学》对照

  • DRY ↔ 减少重复依赖(Ousterhout 红旗「重复」)
  • 正交 ↔ 信息隐藏、模块边界清晰
  • 曳光弹 + design it twice:先跑通再深化接口设计
  • 领域语言 ↔ 命名与抽象层一致(第 14、18 章)

重点与注意

重点DRY、正交、可逆性 是应对变化的三件套。
重点曳光弹 ≠ 原型;前者演进,后者学习后常抛弃。
重点:设计优劣的试金石:变更是否更容易
注意:复制粘贴两行相似代码不一定违反 DRY,若代表不同知识可保留。
注意:可逆性不是永不决策,而是可回退、可替换


导航:上一篇:第 1 章 · 下一篇:第 3 章 基础工具

基于 VitePress 强力驱动 | 记录技术与生活