我是 Rails 应用程序的主要开发人员,该应用程序允许客户管理艺术家作品集网站。系统需要四种截然不同的行为类型:
- 管理员行为,允许登录用户管理其投资组合的内容
- 投资组合显示行为,将用户的投资组合呈现给一般访问者
- 转化漏斗行为,显示有关服务的信息并吸引新用户注册
- 超级管理员行为,向服务所有者显示其他三种行为的统计信息
目前,这四组行为被分解为命名空间控制器——但它们都共享相同的模型。我想知道,由于系统的四个部分几乎不共享任何行为,将应用程序拆分为四个单独的应用程序或引擎是否有任何好处(并将任何共享行为提取到 gems 中。)
例如,处理用户统计数据的系统部分不需要“知道”渲染 YouTube 嵌入到投资组合中,处理显示投资组合的系统部分不需要“知道”A/B测试,处理注册新用户的系统部分除了注册新用户之外不需要“了解”很多其他内容。
此外,我想解决的一个具体问题是,我希望没有经验的团队成员能够为处理注册新用户的网站部分贡献一点代码。如果在站点的该部分中将一两个错误推送到生产环境中,这不会是世界末日,但在显示用户投资组合的系统部分中不允许生产中的错误是非常重要的。
那么,就代码库的可维护性和易读性而言,将这四个组件分成单独的应用程序是否有意义?这样做会在多大程度上简单地将复杂性推入系统的不同层而不消除它?通过创建更清晰解耦的类和模块可以更好地实现这种类型的分离吗?
非常感谢!