【问题标题】:Which refactoring tools can rename a Java class along with all its similarly-named instances?哪些重构工具可以重命名 Java 类及其所有类似名称的实例?
【发布时间】:2019-03-06 11:29:21
【问题描述】:

假设我的 NetBeans Java 项目中有一个名为 Orange 的类,我想将其重命名为 Apple。 NetBeans 重命名重构可以毫无困难地处理这个问题。但是,我的项目包含许多名为 orangeOrange 类实例,导致重构代码出现很多混乱,如下所示:

final Apple orange = new Apple();

我希望所有这些实例——最好还有像juicyOrangedefaultOrange这样的前缀——重命名为applejuicyApple等,作为同一重构的一部分。重构当然不应该影响不同类的变量(例如 Colour orange 应该保持原样),或者 orange 在上下文中已经存在 apple 变量的情况。 IntelliJ IDEA 似乎提供了此功能,但我在 NetBeans 8.2 中找不到。

此功能是否在 NetBeans 本身或任何 NetBeans 插件中可用或计划?如果做不到这一点,是否有任何独立的 Java 重构工具提供它?

【问题讨论】:

    标签: java netbeans refactoring rename automated-refactoring


    【解决方案1】:

    IntelliJ IDEA 似乎提供了这个功能,但我不能 在 NetBeans 8.2 中找到它。

    您在 Intellij IDEA 中描述的重构功能在 NetBeans 8.2 和 NetBeans 9.0 中都不存在。

    此功能是否在 NetBeans 本身中可用或计划中 或在任何 NetBeans 插件中?

    我不知道添加此功能的任何计划,也不知道有任何 NetBeans 插件可以满足您的需求。如果您希望将此功能添加到 Apache NetBeans 9.0 consider raising an enhancement request through a bug report

    也就是说,Edit > Replace in Projects... 提供的功能可能值得将其视为更粗略的替代方案:

    • 您可以为要搜索的文本提供正则表达式。
    • 可以通过多种方式指定要考虑修改的文件:

      • 当前项目。
      • 选定的项目。
      • 所有打开的项目。
      • 打开文件。
      • 选定的文件。
    • 您还可以为要修改的文件提供一个模式,以便进行复杂的选择。例如:

      • 在项目 AB em> 和 C
      • 只修改扩展名为“properties”的打开文件。

    当然,这个功能并不复杂,它会盲目地做任何你告诉它的事情。它无法处理您描述的Colour orange 场景(除非您确保根据您的文件选择标准排除相关文件)。

    如果做不到这一点,是否有任何独立的 Java 重构工具 提供吗?

    推荐软件在这里是特别离题的,尽管在这里的一些封闭式问题中已经提出了这一点。 (见What topics can I ask about here?

    【讨论】:

    • 感谢您的详尽回答和建议的解决方法。我怀疑答案是否定的,但想确定一下。我将提交 NetBeans 功能的功能请求,并在 softwarerecs.se 上尝试我的题外话问题。
    猜你喜欢
    • 1970-01-01
    • 2016-09-02
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 2022-08-23
    • 1970-01-01
    相关资源
    最近更新 更多