【问题标题】:django: how to evaluate a project for refactoringdjango:如何评估重构项目
【发布时间】:2010-07-28 16:35:34
【问题描述】:

你们有没有人评估过django 项目以及如何改进/重构它的代码库?我所在公司的一个宠物项目正在被越来越广泛地使用,在进一步开发之前提高它的质量会很好。在我们开始将越来越多的功能放入其中之前,是否有任何分析 django 项目的技术或方法?我们不想突然意识到,由于之前的错误选择,我们不得不忍受一些非常糟糕的事情。

【问题讨论】:

    标签: django refactoring project-planning evaluation


    【解决方案1】:

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

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

    关于真正的重构,我能想到的唯一重要的工具是South,如果你的数据库方案发生变化,它可以帮助你很多。否则,就像我已经给出的提示:编写测试以确保重构前后的功能保持不变。

    【讨论】:

    • 嗯,你写的大部分内容我都做了。但我仍然不确定,我是否做得很好。
    【解决方案2】:

    您可以了解code smells。有人说,如果您的代码有异味,则意味着您需要考虑重构。

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

    过早的优化是一切的根源 邪恶——唐纳克努斯

    我个人认为这对于(过早的)重构也是有效的。

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

    【讨论】:

    • 代码异味:有没有检测重复代码的工具?
    • 我用我的眼睛做这个,不知道这样的软件工具。
    猜你喜欢
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 2010-09-10
    • 2010-11-10
    • 2023-04-05
    • 1970-01-01
    • 2020-08-13
    • 2014-01-19
    相关资源
    最近更新 更多