我有一堆我要重命名的课程。其中一些名称很小,名称在其他类名称中重复使用,我不希望更改名称。其中大部分都存在于Python代码中,但我们也有一些引用类名的XML代码。
简单的搜索和替换只能让我到目前为止。在我的情况下,我想将AdminAction重命名为AdminActionPlug,将AdminActionLogger重命名为AdminActionLoggerPlug,因此第一个的搜索和替换也会错误地命中第二个。
有没有人有Python重构工具的经验?如果他们也可以修复XML文档中的类名,则可以获得奖励。
答案 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中)
XML重构(我在XML文件的上下文菜单中检查过):
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个小时的阅读手册和反复试验;)