全部文章
~/blog/deep-modules-six-months-later
深模块:六个月之后
1 分钟阅读#architecture#lessons
六个月前,我读了《软件设计的哲学》(A Philosophy of Software Design),并决定做一个实验:宁要少数几个深模块,也不要一堆小模块。接口要短,实现要厚,不写“辅助函数的辅助函数”。
下面是这段经历不加修饰的版本。
行之有效的
- 新人上手更快了。队友只要读三个导出函数,就能讲清楚一个服务是做什么的。
- 我不再写工厂(factory)了。当一个文件已经有 600 行时,“你真的需要这个吗”这道门槛就高得多。
没能奏效的
- 测试写得更慢了。深模块留给你的接缝(seam)更少,所以那些高杠杆的测试成本更高。
- 纪律在截止日期面前会松动。六周之后,两个“小辅助函数”随着一次紧急修复出现,之后再也没离开过。
最有用的收获并不是这条原则本身,而是:为代码库确立一种北极星式的审美,会改变默认的决策——而默认决策的影响会不断累积。