我正在从事的项目的范围正在扩大。该应用程序相当简单,但目前针对的是一个非常具体的利基市场。在不久的将来,我被要求分叉该项目以瞄准新市场并继续同时开发这两个项目。
这两个项目将在功能上相似,因此有很强的动力去概括原始项目的许多内容。此外,我确信我会在不久的将来瞄准更多市场(这些市场是地域性的)。
问题是该项目的先前维护者做出了许多将其与原始市场联系起来的假设。将通用代码与市场特定代码分开需要进行相当多的重构。
为了使事情变得更复杂,关于如何为越来越多的市场组织项目,已经提出了一些建议:
- 每个市场都是一个独立的项目,项目之间的共性被移动到一个共享库中,项目独立部署。
- 扩展现有项目以针对多个市场,根据购买的许可证限制功能。
- 创建父应用程序并将项目重新设计为插件,单独购买
所有三个建议都有优点,理想情况下,我希望代码结构足够灵活,只要稍作调整,就可以实现其中任何一个。建议 3 似乎是最令人生畏的,因为它需要构建一个插件架构。前两个建议更合理一些。
关于这些不同架构的优缺点,是否有任何好的资源可用?
在项目之间共享代码与复制和分叉的优缺点是什么?