原文首发于我的微信公众号:GeekArtT.

将代码分层,当然是为了控制复杂度,让你的管理井井有条。那为什么非得要建立多个不同的独立文件夹,再创建不同的文件呢?

 

一个直接的考虑是,在同一个文件下,也就是同一个文本环境之下,当然会有非常大的自由度去增添代码,没有任何的条款限制。但同样是因为这样的“自由”,它会让管理处于失控。因为控制复杂度,就意味着将多个不确定性的东西固定下来,就需要有强制性的限制,而不是自由。有了更多的限制条件,才能让你控制的主体按照你的思路去发展,去向同一个方向用力,而不是散沙一团。这是一个经典的因为有了更多的局限性,反而让系统发挥出更强大的力量的例子。正如山路赛车,为了更快一点,就必须要用更小的马力。

 

所以,为了让你的“UI部分的代码成一堆”,“数据连接的代码成一堆”,“业务逻辑的代码成一堆”,你必须给予这些部分强硬的限制,让它们只能在特定的范围内出现。这就需要创建不同的文件夹,以及不同的源代码文件。其背后的思维方式是:要用制度去控制组织,而不是依赖组织中每个成员的自身素质;要用代码去控制流程,而不是依靠脑海中的行为规范

 

另一个需要提到的优势是,通过不同的文件创建以及不同文件夹的划分,可以很好地解决名字冲突。每一个模块都可能提供一些相同的功能,但却需要不同的实现。如果你将所有这些“具备相同功能但需要不同实现”的函数放在同一个文本环境下,你将难以区分这些函数,并且会造成冲突。你当然可以通过增添前缀的方式来解决冲突,但这样会造成函数名的臃肿。但更为关键的是:如果你真的写过稍微复杂一点的系统,你会发现在“数量庞大的一堆没有分类”的文本中寻找一个代码片段是件多么让人焦躁的事情!你完全无