阅读(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 插件才支持此功能。
重命名模板:
这样做,下列用法将被重命名:
示例-重命名 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
重命名符号
- 选择要重命名的项目。
- 要选择一个文件,请在 "项目" 工具窗口中单击所需的文件。
- 要在编辑器中选择符号,请将插入符号放在要重命名的元件的名称上。
- 若要在 "项目" 工具窗口中选择一个符号,请确保显示了这些成员,然后单击所需的符号。
- 若要在 "结构" 视图中选择符号,请在 "结构" 工具窗口中单击所需的符号。
- 在主菜单或上下文菜单上选择:重构| 重命名,或按 Shift+F6。
- 随后的行为取决于复选框启用就地模式 (设置/首选参数对话框、编辑器)。
- 如果选中此复选框,则建议的名称将出现在相关符号的正下方。您可以接受建议,也可以输入新的名称。但是,如果再次按 Shift+F6,IntelliJ IDEA 将显示 "重命名" 对话框,其中有更多选项。
- 如果这个复选框没有被选中,则会立即打开 "重命名" 对话框。
这组控件及其名称取决于要重命名的符号的类型。
- 如果您希望 IntelliJ IDEA 查找和重命名与重命名类相关的对象(其名称包含更改的字符串),请选中以下一个或多个选项:
- 重命名变量以重命名该类类型的变量。
- 重命名继承器来重命名类继承者。
- 重命名绑定窗体来重命名绑定到该类的 GUI 窗体。
如果您选择重命名绑定到重命名类的任何对象,IntelliJ IDEA 将搜索相应的项目并按照类型排序的对话框顺序显示它们。在每个对话框中,您可以选择要更改的项目。
- 预览并应用更改。
重命名文件或目录
- 在项目工具窗口中选择所需的文件。
- 在主菜单或上下文菜单上选择:重构| 重命名或按 Shift+F6。
- 在打开的重命名文件对话框中,指定新的文件名。选择“在 comments 和 strings 中搜索”复选框,让 IntelliJ IDEA 将更改应用到注释和字符串。
- 按预览以观察工具窗口可能发生的变化。按重构以继续。IntelliJ IDEA 查找文件名的所有出现并分别改变它们。
重命名文件也可以在编辑器选项卡中找到:
这样做,要重命名的文件将被覆盖。
重要笔记
- 局部变量被重新命名。
- 只有安装了 Python 插件才支持此功能。
重命名 Gherkin 步骤时,请注意以下限制:- 步骤定义不应包含正则表达式.
- 步骤名称只能包含字母数字字符。
- 在不同的框架中,步骤定义应该只有一个。
- 在步骤和步骤定义之间应该有一个 "一对一" 的映射。