源代码树:宽还是深

文章讨论了在PythonAppEngine应用中,宽组织(所有代码集中在一个大仓库,按功能分文件夹)和深组织(代码分散到多个小仓库,每个仓库对应一个模块)的优缺点。作者倾向于宽度方式,强调其利于快速添加和降低耦合,同时提及了保持整洁和适度分层的重要性。
摘要由CSDN通过智能技术生成

在编写了几款 Python App Engine 应用后,我发现自己在两种组织源代码树的方法之间难以抉择:

  • 宽:这种方法将所有代码放在一个大的存储库中,并使用文件夹来组织代码。
  • 深:这种方法将代码分散到多个存储库中,每个存储库包含一个特定的模块或组件。
    在这里插入图片描述

为了便于理解,我们考虑一个小咨询公司内部的应用程序,该应用程序用于管理业务运营,如联系人管理、项目跟踪和报告,以及员工管理。该应用程序可能使用以下关键实体:公司、用户、联系人、客户、项目、工时表等。不难想象,这些模型在网站的功能中是相互交叉的,这意味着可能会存在一些耦合。

在这个例子中,是按照深度方式组织更好,还是按照宽度方式组织更好?

深度方式的示例:

models/
   people.py
   accounting.py
   http://www.jshk.com.cn/mb/reg.asp?kefu=xiaoding;//爬虫IP免费获取;
   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/

这里涉及到权衡取舍,因此在回答时,请说明你的偏好并给出一些理由(例如,假设、调节问题、框架限制、可伸缩性问题、代码维护考虑因素、开发团队结构的影响等)。

2、解决方案

答案1:

我更倾向于宽度方式,因为能够快速地移除东西永远不会有什么坏处。在我职业生涯中,我经常会被要求添加东西,而且通常会被分配一个相对合理的时程来完成。但当需要移除东西时,这个请求几乎从来不会附带影响分析或周转时间。当你按照主要功能模块来拆分东西时,通常最终会得到一个耦合程度低得多的设计。这有时候会很麻烦,但在那些你绝对必须在本周末关闭工作订单模块的情况下,它就是救命稻草。

答案2:

太深的文件夹结构会让人困惑,太宽的文件夹结构也会让人困惑。我更喜欢在两者之间保持平衡。在我正在进行的项目中,我们不知道需要什么,所以我们没有过早地创建一个庞大的文件夹结构。毕竟,我们一开始只有5个文件,所以我们并不真正需要文件夹结构。随着项目越来越大,我们将事情进行组织,以便在进行的过程中保持整洁;没有哪个文件夹有超过10个文件,将事情清楚地分组到文件夹中。四处移动所有这些文件可能需要几分钟时间。现在我们已经有了超过一百个文件,而且文件的存放位置都很清楚。我的建议是采取类似的做法——保持整洁,不要在深度或宽度上走得太远,否则你会使事情变得过于复杂。

答案3:

在你的例子里,我认为“宽度”模型更好。你应该尝试创建可重用的应用程序,即使你并不打算在任何地方重用它们,因为这将鼓励不同应用程序之间更松散的耦合,并从长远来看使维护变得更容易。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值