View on GitHub

modularization-examples

代码防腐实用技术

业务逻辑无论如何做拆分,最终仍然是要跑起来,集成到一起去的。 无论是编辑时拆分成文件、文件夹、Git仓库,还是运行时拆分成进程,拆分无可避免地引入了“降低反馈速度”的副作用。 一旦产生了分工,就会有你不了解的部分。这也是分工的本意所在,控制知识边界,让普通人也可以参与劳动。 但是软件是要整体集成到一起才能发挥其全部价值。这种“整体”与“部分”的矛盾,造成了Feedback问题。

要减轻分工带来的负面影响,最重要的是做好“甩锅”。 换句话说就是要做好“隔离”,虽然我们把所有的部件都集成到了一起了,但是我们仍然要在“运行时”通过各种手段人为制造出边界,把责任隔离出来。 把责任隔离出来,就是把运行时的行为,与背后负责的团队与个人对应起来。

Isolation

用户看到的问题永远是前端的问题,那不可能所有的bug都是前端的锅。 前端也可能是一个多业务线共享的 App,出 bug 的地方可能是共享的地图模块呢? 反馈来自“运行”,然后一次次被传递。如果“运行时”没做好隔离,反馈分发流转给开发者的效率就会变低。

边界从大到小,我们可以分为

Git 仓库独占一个进程未必是唯一的选项。把 Git 仓库以插件的形式,在进程内再切分出插件边界也是可以满足 Feedback 需求的。