你使用Python的什么重构工具?

我有一堆我想重命名的类。 其中一些名称很小,名称在其他类名称中重复使用,我不想更改名称。 这些大部分生活在Python代码中,但我们也有一些引用类名的XML代码。

简单的search和replace只能让我到目前为止。 在我的情况下,我想将AdminAction重命名为AdminActionPlug,将AdminActionLogger重命名为AdminActionLoggerPlug,因此第一个的search和replace也会错误地命中第二个。

有没有人有与Python重构工具的经验? 如果他们也可以修复XML文档中的类名,就可以得到奖励分。

与此同时,我尝试了两种与vim有某种整合的工具。

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

第二个是自行车修理工 ,我猜这个名字是赢得的。 也插入vim和emacs。 还没玩过多less,但是我记得很久以前就试过了。

还没有玩够了,还是尝试了更多types的重构,但是我会再做一些黑客攻击。

我强烈推荐PyCharm – 不仅仅是重构。 自从PyCharm在几年前发布第一个PyCharm答案以来,PyCharm的重构支持有了显着的提高。

Python重构可在PyCharm中find (上次在PyCharm 2016.2上检查2016/07/27)

  • 更改签名
  • 转换成Python包/模块
  • 复制
  • 提取重构
  • 一致
  • 反转布尔值
  • 使顶层function
  • 移动重构
  • 推下议员
  • 把成员拉起来
  • 重命名重构
  • 安全删除

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

  • 改名
  • 移动
  • 复制
  • 将子查询提取为CTE
  • 一致

Javascript重构:

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

您的IDE可以支持重构! 检查它,埃里克,Eclipse,WingIDE有构build重构工具(包括重命名)。 这是非常安全的重构 – 如果出现问题,IDE不会做参考。

另外考虑添加一些unit testing,以确保您的代码在重构过程中不受影响。

WingIDE 4.0(WingIDE是我select的Python IDE)将支持一些重构,但是我刚刚尝试了最新的beta,beta6,…还有一些工作要做。 撤回方法很好地工作,但重命名符号不。

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

PyCharm有一些重构function。

卟啉反应

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

使用引入variables/字段/常量内联本地来改善方法中的代码结构, 提取方法来分解更长的方法, 提取超类 ,上下拉移动来移动方法和类。

您可以使用sed执行此操作。 诀窍是回想一下,正则expression式可以识别单词边界。 这可以在所有平台上运行,只要你获得了Windows上的工具Cygwin,Mac OS可能需要安装开发工具,我不确定,而Linux有这个开箱即用的function。 所以grep,xargs和sed应该在12小时的阅读手册页和反复试验之后做到这一点;)