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

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

有人有使用 Python 重构工具的经验吗?如果他们也能修复 XML 文档中的类名,那就加分了。

有帮助吗?

解决方案

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

第一个是 绳索, ,一个带有 Vim(和 emacs)插件的 Python 重构库。我尝试了几次重命名,这确实达到了预期的效果。它允许我以差异的形式预览重构,这很好。它有点文本驱动,但这对我来说没关系,只是需要更长的时间来学习。

第二个是 自行车修理工 我想这会在名字上赢得分数。还可以插入 vim 和 emacs。还没有玩过太多,但我记得很久以前就尝试过。

还没有足够地使用这两种方法,或者尝试更多类型的重构,但我会用它们做更多的黑客工作。

其他提示

我强烈推荐 皮查姆 - 不仅仅是为了重构。自从几年前在这里发布第一个 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 应该可以解决问题;)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top