通常在开始一个新项目时,我会从我认为在如何构建代码库方面最好的意图开始。我喜欢许多小模块的想法,这些模块可以很好地完成一件事,与代码库的其他部分解耦,并且我自己可能会在其他(类似)项目中重用或开源以供其他人利用。
然而,当我真正尝试将某些东西投入生产时,在紧要关头的那一周,管理所有这些不同模块的复杂性已被证明是一种过多的开销(尽管有良好的文档和部署方法)。在那些时候,我只是简单地改变了策略并将所有模块捆绑到一个存储库中,并将它们作为一个代码库进行管理,这意味着我可以通过不同的分支一起跟踪所有内容,部署到登台和测试环境等......
这些不同方法的优点和缺点是什么,您如何管理以一种或另一种方式工作?
一个单一代码库的优点:
- 易于部署
- 易于回滚
- 易于分支/管理所有更改
- 没有(或更少)需要记录和管理的潜在复杂依赖项
模块化依赖的优点:
- 可重用性
- 干净的架构(一个模块做好一件事)