源代码树:宽或深

And*_* B. 6 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/
   ...
Run Code Online (Sandbox Code Playgroud)

或广泛的,例如,"申请":

people/
   models/
   views/
   controllers/
contact-mgmt/
   models/
   views/
   controllers/
time-tracking/
   models/
   views/
   controllers/
project-reporting/
   models/
   views/
   controllers/
Run Code Online (Sandbox Code Playgroud)

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

Mik*_*ton 4

警告:我没有专门从事过Python工作。话说回来...

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