Python 使用哪些重构工具?

我有一堆类要重命名。其中一些类的名称很小,这个名称在其他类名称中被重用,我不希望这个名称被更改。这些代码大部分都存在于 Python 代码中,但是我们也有一些引用类名的 XML 代码。

简单的搜索和替换只能让我到此为止。在我的例子中,我想把 AdminAction 重命名为 AdminActionPlug,把 AdminActionLogger 重命名为 AdminActionLoggerPlug,这样第一个的搜索和替换也会错误地命中第二个。

有人有 Python 重构工具的经验吗?如果他们也能够修复 XML 文档中的类名,那么就会得到加分。

40768 次浏览

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

第一个是 绳子,这是一个带有 Vim (和 emacs)插件的 python 重构库。我尝试了几次重命名,结果果然如我所愿。它允许我以差异的形式预览重构,这很好。它有点文字驱动,但对我来说没关系,只是需要更长的时间来学习。

第二个是 自行车修理工,我猜它在名字上赢得了分数。还可以插入 vim 和 emacs。还没怎么玩过,但我记得很久以前试过。

还没有玩够这两个,或尝试更多类型的重构,但我会做一些更多的黑客与他们。

您的 IDE 可以支持重构! ! 检查一下,Eric,Eclipse,WingIDE 已经内置了用于重构的工具(包括重命名)。而且这是非常安全的重构——如果有什么地方可能出错,IDE 不会做 ref。

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

WingIDE 4.0(WingIDE 是我选择的 Python IDE)将支持一些重构,但是我刚刚试用了最新的 beta、 beta 6,还有... ... 还有一些工作要做。收回方法可以很好地工作,但重命名符号不行。

更新: 4.0版本已经修复了所有的重构工具,它们现在工作得很好。

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

PyCharm 具有一些重构特性。

PYTHON 重构

重命名 重构允许安全和即时地执行全局代码更改。就地执行文件内的本地更改。重构在普通的 Python 和 Django 项目中工作。

使用 引入变量/字段/常数内联本地来改进方法内部的代码结构,使用 提取方法来分解较长的方法,使用 提取超类俯卧撑拉下来让开来移动方法和类。

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

PyCharm 中可用的 Python 重构(PyCharm 2016.2中最后检查的是2016/07/27)

  • 更改签名
  • 转换为 Python 包/模块
  • 收到
  • 提取重构
  • 插入
  • 倒布尔型
  • 创建顶级功能
  • 移动重构
  • 把会员推下去
  • 把会员拉上来
  • 重命名重构
  • 安全删除

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

  • 重命名
  • 让开
  • 收到
  • 提取子查询作为 CTE
  • 插入

Javascript 重构:

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

我会看看 投球手(https://pybowler.io)。

它更适合于直接从命令行使用,而不适合于攀援和鼓励脚本(一次性脚本)。