你用哪些Python重构工具?
我有一堆类的名字想要改一下。有些名字比较短,而且在其他类的名字里也用到了,我不想把那些名字改掉。大部分代码是在Python里,但我们还有一些XML代码也提到了这些类的名字。
简单的搜索和替换方法只能解决一部分问题。在我的情况下,我想把AdminAction改成AdminActionPlug,把AdminActionLogger改成AdminActionLoggerPlug,但如果用简单的搜索替换,第一个名字的替换会错误地影响到第二个名字。
有没有人用过Python的重构工具?如果它们还能修复XML文档里的类名,那就更好了。
7 个回答
WingIDE 4.0(我最喜欢的Python开发环境)将支持一些代码重构的功能,但我刚试用了最新的测试版,beta6,发现还有一些地方需要改进。虽然“收回方法”这个功能运行得不错,但“重命名符号”这个功能却不太好用。
更新:4.0版本发布后,所有的重构工具都修复好了,现在运行得非常顺利。
我强烈推荐使用PyCharm,不仅仅是因为它的重构功能。自从几年前在这里首次提到PyCharm以来,它的重构支持已经有了很大的提升。
PyCharm中可用的Python重构功能(最后检查时间是2016年7月27日,版本为PyCharm 2016.2)
- 更改函数签名
- 转换为Python包/模块
- 复制
- 提取重构
- 内联
- 反转布尔值
- 创建顶层函数
- 移动重构
- 向下推成员
- 向上拉成员
- 重命名重构
- 安全删除
XML重构功能(我在XML文件的上下文菜单中检查过):
- 重命名
- 移动
- 复制
- 将子查询提取为CTE
- 内联
JavaScript重构功能:
- 在JavaScript中提取参数
- 在JavaScript中更改签名
- 在JavaScript中提取变量
与此同时,我尝试了两个与vim有一些集成的工具。
第一个是Rope,这是一个用于Python代码重构的库,它有一个可以在Vim(和emacs)中使用的插件。我试着用它重命名了一些东西,效果确实如我所期待的那样。它让我可以预览重构的内容,像是对比差异,这点很不错。虽然这个工具有点偏向文本操作,但我觉得还好,只是学习起来需要花点时间。
第二个是Bicycle Repair Man,我觉得这个名字挺有趣的。它同样可以和vim和emacs配合使用。我还没怎么深入使用它,但我记得很久以前试过一次。
我对这两个工具的使用还不够多,也没有尝试过更多类型的重构,不过我会继续研究它们的。