django:如何评估重构项目

时间:2010-07-28 16:35:35

标签: django refactoring project-planning evaluation

您是否有人对django项目进行了评估以及如何改进/重构其代码库?我工作的公司的一个宠物项目正在被越来越广泛地使用,在进一步开发之前提高其质量将是有益的。在我们开始将越来越多的功能纳入其中之前,是否有任何分析django项目的技术或方法?我们不想突然意识到,由于早先的糟糕选择,我们必须忍受非常糟糕的事情。

2 个答案:

答案 0 :(得分:8)

在一个相当大的网站上工作了一年多之后我注意到的主要是关于我们的设计/编码。这不是纯粹的重构相关,可能你已经知道了很多,但也许它可以帮助:)。

  1. 最重要的是,我们并不总是将代码放在正确的位置。视图方法中的功能太多,表单和模型中的功能太少。我多次看到这个问题。要处理输入,请使用表单,格式化/调整/ ...模型数据,使用模型方法或属性。说真的,有一次我把代码放在更好的地方,将大约150行减少到20行。很好地提高了可维护性和可读性
  2. 我们编写的许多代码实际上并没有真正使用python和/或django的全部力量。对于第一个,阅读像Dive Into Python这样的东西是一个很大的帮助,对于第二个,我只是追踪我们构建的所有复杂结构(主要是0.96的遗留代码),并查看django文档中是否有其他选择。当然,不要浪费你的时间来尝试将所有东西都减少到单行,但是使用遗留代码肯定会有助于提高可读性和可维护性。
  3. 始终关注django-snippetsgoogle code等网站,如果有现成的django项目可以带走您的大部分功能。这些项目通常由更多人来看待,因此更稳定,更高效。如果一个项目不能满足您的所有要求,那么您自己只需添加自己的需求就可以了,而不是为您的网站自定义。
  4. 尽量保持应用程序交叉依赖性最小化。当您绘制依赖图时(例如,通过链接每个具有外键的应用程序),它应该仍然清晰,而不是每个应用程序链接到任何其他应用程序的东西。通常情况下,您会有一些“帮助”应用程序(例如用户系统,标记)被许多人使用,而其他所有应用程序实际上只依赖于这些应用程序。
  5. 编写测试,django有一个优秀的测试套件,所以使用它。当然,对于许多应用程序常见且可能会发生变化的代码部分。真的,没有什么比突然注意到你在4个月前真正解决的错误而烦人的事情,而且你不知道从那以后再次破坏它的更新。
  6. 再看一下数据库规范化,django orm模型仍然与关系数据库紧密耦合,因此这是一个重要的概念,当然,当你使用可能在以后扩展的模型时。
  7. 关于真正的重构,我能想到的唯一重要工具是South,如果您的数据库方案发生变化,它可以帮到您很多。否则,就像我已经给出的提示:编写测试以确保重构之前和之后的功能保持不变。

答案 1 :(得分:3)

您可以了解code smells。有些人说如果你的代码闻起来就意味着你需要考虑重构。

事实上这是一个非常广泛的主题。记住:

  

过早优化是所有人的根本   邪恶 - 唐纳德·克努斯

我个人认为这也适用于(过早)重构。

编辑:这也是关于代码味道的好资源:http://www.codinghorror.com/blog/2006/05/code-smells.html