View on GitHub

modularization-examples

代码防腐实用技术

拆分是任意的。随意给一个标准,我们都可以把任何东西按照这个标准给拆了。以下是我给的拆分角度:

业务逻辑可以被拆分成:

这个定义当然不是啥金科玉律。但是它在2020这个时间点的科技树而言,对于大部分开发者来说都是适用的。

文件、文件夹、Git仓库

这种拆分标准屏蔽了不同编程语言和编程框架的影响,我们不用争论什么是Class,什么是Module,什么是Package。

业务逻辑在编辑时需要拆分成文件、文件夹、以及Git仓库。那么从Autonomy,Consistency,Feedback这三个角度,如何评价拆分出来的结果,又有哪些拆分模式呢?

进程

这种拆分标准屏蔽了不同运行环境的影响,无论是 iOS 设备上的 App,还是 apple.com 这个域名背后的服务器,软件总是运行在进程里的。

运行时的表面现象太多了。我们可以随意给一个标准,比如两个界面有什么本质不同呢? 我们可以说不同 URL 的界面是两个“页面”。但是也完全可以 URL 不变,使得界面处于完全不同的两个状态。这样的情况下,这算两个页面还是同一个页面呢? 所以避免拆分出来的东西见仁见智,我们只能选择不那么用户可见,但是又相对稳定的东西。想来想去,也就是进程是歧义比较少的东西。

业务逻辑拆分模式是关于什么的

相比堆砌 MicroService,Domain Layer 这样的辞藻,更能穿透表面现象,看到事物的本质。到头来,总归是文件,文件夹,Git仓库和进程这些东西。