【问题标题】:What refactoring tools do you use for Python? [closed]你为 Python 使用了哪些重构工具? [关闭]
【发布时间】:2010-09-06 22:14:27
【问题描述】:

我有一堆要重命名的类。其中一些名称很小,并且该名称在其他类名中重复使用,我不希望更改该名称。其中大部分存在于 Python 代码中,但我们也有一些引用类名的 XML 代码。

简单的搜索和替换只能让我到目前为止。就我而言,我想将 AdminAction 重命名为 AdminActionPlug 并将 AdminActionLogger 重命名为 AdminActionLoggerPlug,因此第一个的搜索和替换也会错误地命中第二个。

有人有使用 Python 重构工具的经验吗?如果他们也可以修复 XML 文档中的类名,则可以加分。

【问题讨论】:

    标签: python refactoring


    【解决方案1】:

    与此同时,我尝试了两个与 vim 有某种集成的工具。

    第一个是Rope,一个带有Vim(和emacs)插件的python重构库。我尝试了一些重命名,并且确实按预期工作。它允许我将重构预览为差异,这很好。它有点文本驱动,但这对我来说没关系,只是需要更长的时间来学习。

    第二个是Bicycle Repair Man,我猜它会在名字上加分。还可以插入 vim 和 emacs。还没有玩太多,但我记得很久以前尝试过。

    还没有玩够这两个,或者尝试了更多类型的重构,但我会用它们做更多的黑客攻击。

    【讨论】:

    • 有一天,一位大神从天而降,他会给我们一个基于 Dev Express C# Code Rush 其他语言的重构工具。当那一天到来时,Ctrl+Plick 将成为地球上最常用的快捷键。阿门。
    • 绳子在一个奇怪的地方。它有很多文档,但仍然很难理解。那里没有好的教程。有人应该在 github 上制作一个称为现代 vim IDE 的 vim 版本,包括电池,并为我们节省大量时间。 Janus 是一个很好的开始,但它不包括任何重构库或 Django 代码完成等。
    【解决方案2】:

    我强烈推荐PyCharm - 不仅仅是重构。自从几年前在这里发布第一个 PyCharm 答案以来,PyCharm 中的重构支持有了显着改善。

    Python Refactorings available in PyCharm(在 PyCharm 2016.2 中最后一次检查是 2016/07/27)

    • 更改签名
    • 转换为 Python 包/模块
    • 复制
    • 提取重构
    • 内联
    • 反转布尔值
    • 制作顶级函数
    • 移动重构
    • 下推成员
    • 拉起成员
    • 重命名重构
    • 安全删除

    XML 重构(我在一个 XML 文件的上下文菜单中检查过):

    • 重命名
    • 移动
    • 复制
    • 将子查询提取为 CTE
    • 内联

    Javascript 重构:

    • 在 JavaScript 中提取参数
    • JavaScript 中的更改签名
    • 在 JavaScript 中提取变量

    【讨论】:

    • 我刚刚检查过,它无法重命名 Cython pyx 文件中的函数。
    【解决方案3】:

    WingIDE 4.0(WingIDE 是我选择的 python IDE)将支持一些重构,但我刚刚试用了最新的 beta、beta6 和……还有工作要做。 Retract 方法效果很好,但 Rename Symbol 不行。

    更新:4.0 版本修复了所有重构工具。他们现在工作得很好。

    【讨论】:

    • 刚刚根据这个答案尝试了 Wing 6.0.4 pro,我做的第一个简单重构(将函数移动到单独的文件)通过简单地在最后一个导入后面添加新的导入语句来破坏代码它可以find 没有任何缩进,尽管该语句不是顶级的。六年后,仍然是基本问题。不推荐!
    【解决方案4】:

    我会看看 Bowler (https://pybowler.io)。

    它比rope更适合直接从命令行使用,并且鼓励编写脚本(一次性脚本)。

    【讨论】:

    • 我自己最终使用了RedBaron
    • 保龄球真的用了吗? ,我只能在公共回购中找到少数使用它的小项目,而且似乎没有积极维护
    【解决方案5】:

    您的 IDE 可以支持重构! 检查一下,Eric、Eclipse、WingIDE 已经内置了重构工具(包括重命名)。这是非常安全的重构——如果出现问题,IDE 不会做参考。

    还可以考虑添加一些单元测试,以确保您的代码在重构期间不会受到影响。

    【讨论】:

      【解决方案6】:

      PyCharm 有一些重构功能。

      Python 重构

      重命名重构允许安全、即时地执行全局代码更改。文件中的本地更改是就地执行的。重构适用于普通的 Python 和 Django 项目。

      使用 Introduce Variable/Field/ConstantInline Local 改进方法内的代码结构,Extract Method 分解较长的方法、Extract SuperclassPush UpPull DownMove移动方法和类。

      【讨论】:

        【解决方案7】:

        您可以使用 sed 来执行此操作。诀窍是记住正则表达式可以识别单词边界。只要您获得工具,这适用于所有平台,在 Windows 上是 Cygwin,Mac OS 可能需要安装开发工具,我不确定,Linux 开箱即用。所以 grep、xargs 和 sed 应该可以解决问题,经过 12 个小时的阅读手册页和反复试验;)

        【讨论】:

        • 希望如此,因为它暗示了与最低投票答案相同的事情(查找和替换)。
        猜你喜欢
        • 2010-09-20
        • 1970-01-01
        • 2010-10-26
        • 2010-10-05
        • 2011-02-11
        • 2011-06-22
        • 2016-10-11
        • 2010-11-24
        相关资源
        最近更新 更多