你们有没有人对django
项目进行过评估以及如何改进/重构它的代码库?我所在公司的一个宠物项目正在被越来越广泛地使用,在进一步开发之前提高它的质量会很好。django
在我们开始将越来越多的功能放入项目之前,是否有任何分析项目的技术或方法?我们不想突然意识到,由于早期的糟糕选择,我们不得不忍受一些非常糟糕的事情。
问问题
1823 次
2 回答
9
在一个相当大的网站上工作一年多后,我注意到的主要是我们的设计/编码。它不是纯粹与重构相关的,您可能已经知道很多,但也许它可以提供帮助:)。
- 最重要的是,我们并不总是将代码放在正确的位置。视图方法中的功能太多,表单和模型中的功能太少。我多次看到这个问题。要处理输入,使用表单,格式化/调整/...模型数据,使用模型方法或属性。说真的,有一次我通过将代码放在更好的地方,将大约 150 行的视图减少到 20 行。很好地提高了可维护性和可读性
- 我们编写的许多代码实际上并没有真正使用 python 和/或 django 的全部力量。对于第一个,阅读Dive Into Python之类的东西很有帮助,对于第二个,我只是追踪了我们构建的所有复杂结构(主要是 0.96 的遗留代码)并查看 django 文档中是否有替代方案。当然,不要浪费时间试图将所有内容简化为单行代码,但是对于遗留代码,这肯定有助于提高可读性和可维护性。
- 总是在django-snippets、google code等网站上查看......如果有不错的现有 django 项目可以带走你的很多功能。通常这些项目会受到更多人的关注,因此更加稳定和高效。如果一个项目不能满足您的所有需求,那么您甚至可以自己添加您的需求,而不是为您的网站定制。
- 尽量减少应用程序的交叉依赖。当您绘制依赖关系图(例如,通过将具有外键的每个应用程序相互链接)时,它应该仍然清晰,而不是每个应用程序都链接到任何其他应用程序。通常,您将拥有一些被许多人使用的“帮助”应用程序(例如用户系统、标记),而所有其他应用程序实际上仅依赖于这些应用程序。
- 编写测试,django 有一个优秀的测试套件,所以使用它。当然对于许多应用程序通用并且可能会更改的部分代码。真的,没有什么比突然注意到一个您在 4 个月前实际解决的错误更令人讨厌的了,而且您不知道从那以后是哪个更新再次破坏了它。
- 再看一下数据库规范化,django orm 模型仍然与关系数据库紧密耦合,因此它是一个重要的概念,尤其是当您使用以后可能会扩展的模型时。
关于真正的重构,我能想到的唯一重要工具是South,如果您的数据库方案发生变化,它可以为您提供很多帮助。否则,就像我已经给出的提示一样:编写测试以确保重构前后的功能保持不变。
于 2010-07-28T17:24:31.547 回答
3
您可以了解代码异味。有些人说,如果你的代码有异味,则意味着你需要考虑重构。
事实上,这是一个非常广泛的主题。请记住:
过早的优化是万恶之源——DonaldKnuth
我个人认为这对于(过早的)重构也是有效的。
编辑:这也是关于代码气味的一个很好的资源:http: //www.codinghorror.com/blog/2006/05/code-smells.html
于 2010-07-28T18:00:41.370 回答