您为Python使用了哪些重构工具?

时间:2008-08-26 18:26:52

标签: python refactoring

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

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

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

7 个答案:

答案 0 :(得分:53)

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

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

第二个是Bicycle Repair Man我想在名字上赢得积分。也插入vim和emacs。还没玩过多少,但我记得很久以前就试过了。

还没有玩过足够的,或尝试过更多类型的重构,但我会对它们进行更多的黑客攻击。

答案 1 :(得分:24)

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

Python Refactorings available in PyCharm(最后检查2016年7月27日在PyCharm 2016.2中)

  • 更改签名
  • 转换为Python包/模块
  • 复制
  • 提取重构
  • 内联
  • 反转布尔
  • 制作顶级功能
  • 移动重构
  • 推送会员
  • 拉出会员
  • 重命名重构
  • 安全删除

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

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

Javascript重构:

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

答案 2 :(得分:5)

WingIDE 4.0(WingIDE是我选择的python IDE)将支持一些重构,但我刚尝试了最新的测试版,beta6和......还有一些工作要做。撤回方法很好地工作,但重命名符号没有。

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

答案 3 :(得分:4)

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

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

答案 4 :(得分:4)

PyCharm有一些重构功能。

  

PYTHON REFACTORING

     

重命名重构可以安全,即时地执行全局代码更改。文件中的本地更改是就地执行的。重构在纯Python和Django项目中工作。

     

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

答案 5 :(得分:4)

我来看看 Bowler https://pybowler.io)。

比起绳索,它更适合直接在命令行中使用,并鼓励编写脚本(一次性脚本)。

答案 6 :(得分:-3)

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