源代码树:宽或深

时间:2010-08-09 01:42:43

标签: python google-app-engine directory-structure

在编写了几个python appengine应用程序后,我发现自己在组织源代码树的两种方法之间徘徊:广泛或深入。

具体而言,考虑为小型咨询公司提供内部应用程序,以管理联系人管理,项目跟踪等方面的业务运营。报告和员工管理。应用程序可能会使用以下关键实体:公司,用户,联系人,客户,项目,时间表等。无需详细说明,可以想象这些模型跨越网站的各个功能。这可能意味着存在一些耦合。

在这个例子中,最好是以深层次的方式组织,例如:

models/
   people.py
   accounting.py
   projects.py
   foo.py
controllers/
   reporting.py
   employeeops.py
   accounting.py
   crm.py
views/
   ...

或广泛的方式,例如“申请”:

people/
   models/
   views/
   controllers/
contact-mgmt/
   models/
   views/
   controllers/
time-tracking/
   models/
   views/
   controllers/
project-reporting/
   models/
   views/
   controllers/

我知道所有设计都涉及权衡,所以在回复时你可以指出你的偏好和一些推理(例如,假设,调整问题,框架限制,可扩展性问题,代码维护考虑因素,开发团队结构的影响等)

4 个答案:

答案 0 :(得分:4)

警告:我没有专门在python中工作过。说完了......

很宽,我会告诉你原因:能够快速移除东西永远不会伤害。在我的职业生涯中,我经常被要求添加内容并给出相应合理的时间表,但是当需要删除某些内容时,请求几乎不会出现影响分析或时间问题。当您通过主要功能模块解决问题时,通常最终会得到一个更少耦合的设计。它可能是一个真正的屁股痛苦,但是对于那些你必须在本周末关闭工作订单模块的时候,这是一个救生员。

答案 1 :(得分:3)

文件夹结构太深会让人感到困惑。太宽,令人困惑。我宁愿在它们之间保持平衡。在我正在研究的项目上,我们不知道我们需要什么,所以我们没有过早地创建一个庞大的文件夹结构。毕竟,我们只开始使用5个文件,因此我们对文件夹结构没有 need 。随着项目规模的扩大,我们组织了一些事情,以便在我们去的时候保持整洁;没有超过10个文件的文件夹,清楚地将文件分组到文件夹中。移动它需要几分钟。现在我们有超过一百个文件,并且它总是很清楚。我的建议是做类似的 - 保持整洁,不要在深度或宽度上走得太远,否则你会使事情过于复杂。

答案 2 :(得分:2)

在你的情况下,我认为“宽”模型更好。您应该尝试创建应用程序,以便它们可以重复使用,即使您不打算在任何地方重复使用它们,因为这会鼓励在不同应用程序之间进行更松散的耦合,并且从长远来看使维护更容易。

答案 3 :(得分:0)

其实我更喜欢混合。软件分为水平和垂直组件 水平组件可以在所有模块中重复使用,并表示要重用的公共代码,这些代码不是特定于应用程序的,而是特定于体系结构的 所以我有常用工具,框架,可重用基础设施库的文件夹,如持久性,通信,安全性,日志记录等......

垂直组件是各个用例。 对于每个用例,我有一个具有UI,Server和UI的文件夹,我有视图和控制器。该模型通常在两者之间共享。

如果您的项目非常庞大,那么您可能会有不同的职责范围,例如库存控制,销售,联系人管理,报告等......将这些添加到您的文件夹结构中并放置适用于它们的用例。 / p>

如果有任何重复使用,可以在树上移动任何组件。