Skip to content

第 3 章:能跑还不够

系列:软件设计的哲学 · 第 3/22 章
全书导读:00-overview.md


一句话总结

战略式编程把额外 10–20% 时间投在设计上,换长期更快的交付;战术式「先跑再说」应是例外而非常态。


核心观点浓缩

  • 战术式:目标是最快出功能,默认接受技术债
  • 战略式:目标是最低长期复杂度,愿意为多一层抽象、更清晰接口付 upfront 成本
  • 战略式不是无限设计:在实现过程中持续小步调整设计,而非瀑布式大设计
  • 投资设计的时间通常在第一次实现时花最划算——那时上下文最全
  • 明确一次性原型可以战术式,但必须标注丢弃,禁止悄悄上线

关键概念 / 金句

模式适用
战略式编程产品代码、长期维护模块(默认)
战术式编程验证可行性、即将抛弃的 spike

「前期略慢,后期快」——曲线交叉点往往比直觉更早到来。


本章在全书中的位置

第 3 章把第 2 章的「复杂度敌人」转化为工作方式:没有战略心态,第 4–11 章的模块技法很难坚持。承上启下,是行为准则章。


个人思考与启发

deadline 压力下最易「战术式固化」:临时 flag、硬编码路径进了 release。可在迭代末留固定比例的 design budget(如每 sprint 半天)还债,比大版本前集中重构更可持续。


与《程序员修炼之道》对照

  • 曳光弹探需求是战术式探索,但曳光弹代码应替换而非演进——与本书「标注原型」一致
  • 「够好即可」是在质量维度权衡;战略式是在时间维度权衡——都反对无脑堆砌
  • 重构习惯是战略式的日常体现:每次改动让结构更清晰一点

重点与注意

重点默认战略式;战术式需显式授权与生命周期。
重点:设计投资发生在写代码时,不是「以后有空再整理」。
注意:战略式 ≠ 分析瘫痪;用第 11 章「设计两次」控制设计时间上限。
注意:经理只看短期 velocity 时,用变更成本数据说话,而非审美争论。


导航第 2 章 复杂度的本质 · 下一篇:第 4 章 模块应深

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