全部文章

~/blog/deep-modules-six-months-later

深模块:六个月之后

1 分钟阅读#architecture#lessons

六个月前,我读了《软件设计的哲学》(A Philosophy of Software Design),并决定做一个实验:宁要少数几个深模块,也不要一堆小模块。接口要短,实现要厚,不写“辅助函数的辅助函数”。

下面是这段经历不加修饰的版本。

行之有效的

  • 新人上手更快了。队友只要读三个导出函数,就能讲清楚一个服务是做什么的。
  • 我不再写工厂(factory)了。当一个文件已经有 600 行时,“你真的需要这个吗”这道门槛就高得多。

没能奏效的

  • 测试写得更慢了。深模块留给你的接缝(seam)更少,所以那些高杠杆的测试成本更高。
  • 纪律在截止日期面前会松动。六周之后,两个“小辅助函数”随着一次紧急修复出现,之后再也没离开过。

最有用的收获并不是这条原则本身,而是:为代码库确立一种北极星式的审美,会改变默认的决策——而默认决策的影响会不断累积。