阅读(4822) (12)

IntelliJ IDEA重命名重构

2017-11-09 10:21:46 更新

IntelliJ IDEA 重命名重构允许您重命名类、接口、枚举和注释,并自动更正代码中的所有引用。

IntelliJ IDEA 中提供了以下重命名重构:

  • 重命名包。以下用法被重新命名:Package 语句、Import 语句、类的合格名称。
  • 重命名类。以下用法被重新命名:Import 语句、类的合格名称、具有选定类类型的变量、类继承者.
  • 只有安装了 Ruby 插件才支持此功能。
  • Ruby 脚本。在 Ruby 脚本中重命名适用于所有符号,并将更改传播到项目中的所有用法。
  • Ruby 类。重命名一个 Ruby 类的结果取决于调用的位置和包含的文件名。首先,如果已从模板创建了 Ruby 类,则包含的文件名与指定的类名匹配。因此,从编辑器中重命名 Ruby 类将导致根据 Ruby 命名约定生成新的文件名。如果包含文件的名称与类名称不匹配,则只重命名该类及其用法。其次,如果从 "项目" 工具窗口调用重命名重构,则只更改文件名; 包含的类的名称将保持不变。
  • Rails 应用程序的组件。Rails 应用程序中的重命名适用于应用程序元素(类、控制器、操作、助手、帮助器、视图)及其用法。建议使用项目工具窗口的 Rails 视图或编辑器来重命名 Rails 应用程序的元素。在 Rails 应用程序中重命名重构有以下几点细节:
    • 在重命名操作或视图模板时,所有关联的实体都被重命名,包括测试。但是,在重命名测试时,它的相关实体不会重命名。
    • 重命名时,请记住新名称应符合 Rail s命名约定;否则名字将不能被正确识别。这意味着,当你重新命名,例如,MyController 到 YourController,你只需要改变 My 到 Your,留下 Controller 后缀不变。
    • 在重命名一个控制器或视图,它在 RSpec 测试中的用法只会在“评论和字符串中搜索”选项已启用时被重命名。
    • 重命名 Rails 模型时,所有的用法也被重新命名:底层的文件、类、测试类和夹具。IntelliJ IDEA 创建一个迁移,并使用指令重命名相应的表。当模型中的某个字段被重命名时,IntelliJ IDEA 将创建一个迁移,其中包含指令重命名表中对应的列及其外键(如果有的话)。
  • 命名范围。这样做,将重命名的作用域作为方法被调用的代码行也被重命名。
  • Sass 选择器
  • 重命名方法。以下用法被重新命名:该方法的所有调用;所有在子类中重写/实现的方法。
  • 重命名字段。
  • 重命名函数。
  • 重命名变量。
  • 重命名参数。以下用法被重新命名:参数的所有用法;文档注释中相应的参数标记。
  • 重命名 CSS 颜色值。
  • 重命名文件。
  • 重命名目录。
  • 在 Grails 应用程序中重命名视图和视图的引用。

重命名重构示例

示例-重命名一个类

重构前:

public class MyClass {
    // some code here
}
    ...
    public void myMethod() {
        MyClass myClass = new MyClass();
    }

重构后:

public class  YourClass {
    // some code here
}
    ...
    public void myMethod() {
        YourClass yourClass = new YourClass();
    }


示例-重命名一个方法

注意:只有安装了 Python 插件才支持此功能。

重构前:

def  was_published_today(self):
return  self.pub_date.date () == datetime.date.today()

重构后:

def  published_today(self):
return  self.pub_date.date () == datetime.date.today()

示例-重命名模板

注意:只有安装了 Python 插件才支持此功能。

重命名模板:

IntelliJ IDEA重命名重构

这样做,下列用法将被重命名:

IntelliJ IDEA重命名重构

示例-重命名 Ruby/Rails 符号

注意:只有安装了 Ruby 插件才支持此功能。

用匹配的文件名重命名 Ruby 类:

操作前:

MyClass - my_class.rb

操作后:

YourClass - your_class.rb

重命名 Rails 方法:

操作前:

def bar(a,b,c)
    return a * b + c * 123
end
def foo
    a = 0
    b = 1
    c = 2
    return bar (a,b,c)
end

操作后:

def do_smth (a,b,c)
    return a * b + c * 123
end
def foo
    a = 0
    b = 1
    c = 2
    return do_smth (a,b,c)
end

重命名 Rails 模型:

操作前:

Model Library.
The following symbols should be renamed:

Class Library
Fixture library.yml
Test class library_test.rb
Test class LibraryTest.rb
File library.rb

操作后:

Model Books.
As a result of performing the Rename refactoring, IntelliJ IDEA creates a migration. Execute the migration to have the following symbols actually renamed:

Class Books
Fixture books.yml
Test class books_test.rb
Test class BooksTest.rb
File books.rb

重命名范围及其用法:

操作前:

Class Word
    scope :word_length, lambda {|word_length| where :char_count => word_length}
end

assert_equal 0, Word.word_length(0).size

操作后:

Class Word
    scope :word_length1, lambda {|word_length| where :char_count => word_length}
end

assert_equal 0, Word.word_length1(0).size

重命名符号

  1. 选择要重命名的项目。
    • 要选择一个文件,请在 "项目" 工具窗口中单击所需的文件。
    • 要在编辑器中选择符号,请将插入符号放在要重命名的元件的名称上。
    • 若要在 "项目" 工具窗口中选择一个符号,请确保显示了这些成员,然后单击所需的符号。
    • 若要在 "结构" 视图中选择符号,请在 "结构" 工具窗口中单击所需的符号。
  2. 在主菜单或上下文菜单上选择:重构| 重命名,或按 Shift+F6。
  3. 随后的行为取决于复选框启用就地模式 (设置/首选参数对话框、编辑器)。
    • 如果选中此复选框,则建议的名称将出现在相关符号的正下方。您可以接受建议,也可以输入新的名称。但是,如果再次按 Shift+F6,IntelliJ IDEA 将显示   "重命名" 对话框,其中有更多选项。
    • 如果这个复选框没有被选中,则会立即打开 "重命名" 对话框。

    这组控件及其名称取决于要重命名的符号的类型。

  4. 如果您希望 IntelliJ IDEA 查找和重命名与重命名类相关的对象(其名称包含更改的字符串),请选中以下一个或多个选项:
    • 重命名变量以重命名该类类型的变量。
    • 重命名继承器来重命名类继承者。
    • 重命名绑定窗体来重命名绑定到该类的 GUI 窗体。

    如果您选择重命名绑定到重命名类的任何对象,IntelliJ IDEA 将搜索相应的项目并按照类型排序的对话框顺序显示它们。在每个对话框中,您可以选择要更改的项目。

  5. 预览并应用更改。

重命名文件或目录

  1. 在项目工具窗口中选择所需的文件。
  2. 在主菜单或上下文菜单上选择:重构| 重命名或按 Shift+F6。
  3. 在打开的重命名文件对话框中,指定新的文件名。选择“在 comments 和 strings 中搜索”复选框,让 IntelliJ IDEA 将更改应用到注释和字符串。
  4. 按预览以观察工具窗口可能发生的变化。按重构以继续。IntelliJ IDEA 查找文件名的所有出现并分别改变它们。

重命名文件也可以在编辑器选项卡中找到:

ij_rename_from_editor_tab

这样做,要重命名的文件将被覆盖。

    重要笔记

    • 局部变量被重新命名。
      IntelliJ IDEA 
      只有安装了 Python 插件才支持此功能。
      IntelliJ IDEA 
      为了能够在重命名局部变量时使用重命名对话框,你应该在编辑器设置中禁用就地重构。
    • 只有安装了 Python 插件才支持此功能。
      重命名 Gherkin 步骤时,请注意以下限制:
      • 步骤定义不应包含正则表达式.
      • 步骤名称只能包含字母数字字符。
      • 在不同的框架中,步骤定义应该只有一个。
      • 在步骤和步骤定义之间应该有一个 "一对一" 的映射。