简单不等于小巧:Unix 工具又小又耦合,解耦才是真正的追求
来源: jyn.dev — 2026-09-04
概述
jyn.dev 一篇被广泛讨论的编程方法论文章。作者从一场演讲的 Q&A 出发:讲者劝大家「优先追求简单」,却对自己的答案不满意——因为 Unix 管道那类人人称颂的「小而美」其实并不简单。借用 Rich Hickey 的词源,simple(sim-plex)指「只有一股编织」,complex(com-plex)是「多股编织在一起」,作者直接用「耦合」作为 complex 的同义词。他论证:Uniq 这类 Unix 工具把排序与聚合绑死,是「又小又耦合」的典型;而 Google Drive 这样庞大的程序对用户却近乎「简单」。真正的分界不是代码体积,而是特性之间的耦合度——就像 Rust 的 struct 把类型检查与固定的数据表示耦合在一起,而 Clojure 用可检查的 map 注解在运行期解耦了两者。结论是:不必追求小,而要追求解耦;「什么时候该让程序简单」的答案是——永远。
核心要点
- 沿用 Rich Hickey 的词源:simple(sim-plex)是「只有一股编织」,complex 即「多股编织」——作者直称其为耦合
- Unix 的 sort | uniq -c 这类工具把排序与聚合绑死,是「又小又耦合」的典型,简单并不等于小
- 庞大的 Google Drive 对用户近乎简单,说明复杂度取决于特性间耦合而非代码体积
- Rust 的 struct 把类型检查与固定数据表示耦合;Clojure 用可运行期检查的 map 注解解耦了两者
- 作者修好后的覆盖率流水线变大了却更简单,因为数据流图里隐藏的依赖变少了
金句
Unix tools are small but they are not simple.(Unix 工具很「小」,但它们并不「简单」。)
👍 0
👎 0
返回 Lobsters 首页