题
我有一个大型应用程序(-50的模块)采用一个结构类似于以下内容:
- 应用程序
- 通信模块
- 颜色的通信模块
- SSN通信模块
- 等等。通信模块
- 路由器模块
- 服务模块
- 投票服务模块
- 网接口的子模块投票
- 投票集电子模块投票
- 等等。投票
- 测验服务模块
- 等等。模块
- 投票服务模块
- 通信模块
我想进应用专家和颠复活动。经过一些研究,我发现,两个实际办法存在于此。
一种是使用树形结构正如前一个。其缺点的这种结构是你需要一吨的调整/黑客行为获得的多模块报告工作以及与家.另一个缺点是,在颠复该标准的干/标签/分支机构的办法加入更复杂的储存库。
其他方法使用平结构,其中有的只是一个父项目和所有模块、子系统和零部件的子都是直接孩子的父项目。这种方法很有效用于汇报和更容易在颠复,但是我觉得我失去了一位的结构,这种方式。
这样你会选择在长期的和为什么?
解决方案
我们有一个相当大的应用程序(160+访束在那里的每一束是一家模块)和教训,我们学习和继续学习,是平更好。该问题编码语义的层次结构中的是你失去了灵活性。一个模块也就是100%的人说"通信"今天可以部分"服务"的明天,那么你只需要移动的东西在你的储存库,这将打破所有各种各样的脚本、文件、参考资料等等。
因此,我建议一个平的结构和编码语义,在另一个地方(例如说IDE工作区或文件).
我已经回答了一个问题,有关的版本控制的布局,在一些细节 例在另外一个问题, 它可以是相关的情况。
其他提示
我觉得你最好不要压扁你的目录结构。也许你想出了一个命名的公约》的目录,使得他们很好地在观看的所有项目,但最终我不认为所有额外的层次结构是必要的。
假设你在利用日食作为你的IDE的所有项目都要结束了在一个平坦的名单一旦你进他们无论如何,所以你真的不会获得任何额外的子目录。那另外的事实,该结构是如此简单的没有额外的层次的使得该选择非常明确的在我的脑海里。
你可能还需要考虑相结合的一些模块。我什么都不知道关于你的应用程序或领域,但它似乎是一个很大的那些叶级模块可能更适合作为仅包或成套软件包内的另一个顶级模块。我所有的保持罐子里的凝聚力,但它可以采取的太远的时候。