题
我有很多课程要重命名。其中一些名称很小,并且该名称在其他类名称中重复使用,我不希望更改该名称。其中大部分存在于 Python 代码中,但我们也有一些引用类名的 XML 代码。
简单的搜索和替换只能让我到目前为止。就我而言,我想将 AdminAction 重命名为 AdminActionPlug,将 AdminActionLogger 重命名为 AdminActionLoggerPlug,因此第一个的搜索和替换也会错误地命中第二个。
有人有使用 Python 重构工具的经验吗?如果他们也能修复 XML 文档中的类名,那就加分了。
其他提示
我强烈推荐 皮查姆 - 不仅仅是为了重构。自从几年前在这里发布第一个 PyCharm 答案以来,PyCharm 中的重构支持已经显着改进。
PyCharm 中可用的 Python 重构 (上次检查于 2016 年 7 月 27 日在 PyCharm 2016.2 中)
- 更改签名
- 转换为 Python 包/模块
- 复制
- 提取重构
- 排队
- 反转布尔值
- 制作顶级函数
- 移动重构
- 将成员推下
- 拉动会员
- 重命名重构
- 安全删除
XML 重构(我在 XML 文件中签入了上下文菜单):
- 改名
- 移动
- 复制
- 将子查询提取为 CTE
- 排队
JavaScript 重构:
- 在 JavaScript 中提取参数
- 更改 JavaScript 中的签名
- 在 JavaScript 中提取变量
WingIDE 4.0(WingIDE 是我选择的 python IDE)将支持一些重构,但我刚刚尝试了最新的 beta、beta6 和...还有工作要做。Retract Method 工作得很好,但 Rename Symbol 却不行。
更新:4.0 版本修复了所有重构工具。他们现在工作得很好。
你的IDE可以支持重构!!检查一下 Eric、Eclipse、WingIDE 是否有内置的重构工具(包括重命名)。这是非常安全的重构——如果出现问题,IDE 不会进行引用。
还可以考虑添加一些单元测试,以确保您的代码在重构期间不会受到影响。
皮查姆 具有一些重构功能。
Python 重构
改名 重构允许安全、即时地执行全局代码更改。文件内的本地更改是就地执行的。重构适用于普通的 Python 和 Django 项目。
使用 引入变量/字段/常量 和 内联本地 为了改进方法内的代码结构, 提取方法 分解较长的方法, 提取超类, 俯卧撑, 拉下 和 移动 移动方法和类。
我会看一下 投球手 (https://pybowler.io).
它比绳索更适合直接从命令行使用,并且鼓励编写脚本(一次性脚本)。
您可以使用 sed 来执行此操作。诀窍是要记住正则表达式可以识别单词边界。如果您获得工具,这适用于所有平台,在 Windows 上是 Cygwin,Mac OS 可能需要安装开发工具,我不确定,而 Linux 则具有开箱即用的功能。因此,经过 12 个小时的阅读手册页和反复试验后,grep、xargs 和 sed 应该可以解决问题;)