python - 源代码树 : wide or deep

标签 python google-app-engine directory-structure

在编写了一些 python 应用程序引擎应用程序之后,我发现自己在两种组织源代码树的方法之间左右为难:广度或深度。

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

在这个例子中,以深度方式组织是否更可取,例如:

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/

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

最佳答案

警告:我没有专门从事 python 工作。话虽如此……

范围很广,我会告诉你原因:能够快速删除内容永远不会有坏处。在我的职业生涯中,我经常被要求添加一些东西并给出一个相对合理的时间表来完成它,但是当需要删除一些东西时,这个请求几乎从来没有附带影响分析或时间来处理。当您按主要功能模块进行分解时,您通常会得到耦合度较低的设计。这可能是一个真正的痛苦,但对于那些你绝对必须在周末之前关闭工作订单模块的时候,它是一个救命稻草。

关于python - 源代码树 : wide or deep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3436867/

相关文章:

javascript - 实时更新谷歌应用程序引擎中的图表(python)

python - Google App Engine Jinja2 模板从父文件夹扩展基本模板

python - 在类内部创建对他自己类型的引用

node.js - 我可以使用 docker 容器来保存静态文件,以便其他 docker 容器可以访问它吗?

python - 如何从边列表中构建面列表,并使顶点顺序一致?

python - 字典变量如何存储在内存中?

python - 屏幕命令和python

python - 使 .log 文件持久化

firefox-addon - 如何从 Data 中的 HTML 文件引用 Lib 中的 JavaScript 文件?

Java应用程序目录结构