IntelliJ IDEA "提取变量重构" 将所选表达式的结果放入一个变量中。它声明一个新的变量,并使用该表达式作为初始值设定项。原始表达式被替换为新变量(请参见下面的示例)。
在 Java 中,新变量的类型对应于由表达式返回的类型。有一个声明新变量的选项 final。
要执行这个重构,您可以使用:
⒈ 就地重构。在这种情况下,你可以在编辑器中指定新的名字。
⒉ 重构对话框,你可以在其中指定所有必需的信息。要使这样一个对话框可访问,您必须清除 "编辑器设置" 中的 "就地" 模式下的复选框。
您可以自己选择要用变量替换的表达式,也可以使用智能表达式选择。在这种情况下,IntelliJ IDEA 将帮助您选择所需的表达式。
这个重构也可用于 JavaScript 和 Sass。
示例-1
提取变量重构前:
public void method() {
int a = 1;
...
int b = a + anotherClass.intValue();
int c = b + anotherClass.intValue();
}
提取变量重构后:
public void method() {
int a = 1;
...
int number = anotherClass.intValue();
int b = a + number;
int c = b + number;
示例-2
提取变量重构前:
public void method() {
int a = anotherClass.innerClass.i;
int b = anotherClass.innerClass.j;
}
提取变量重构后:
public void method() {
AnotherClass.InnerClass aClass = anotherClass.innerClass;
int a = aClass.i;
int b = aClass.j;
}
示例-3
提取变量重构前:
static void printNames(final String fullName) {
System.out.println(fullName.substring(fullName.indexOf(" ") + 1));
System.out.println(fullName.substring(0, fullName.indexOf(" ")));
}
提取变量重构后:
static void printNames(final String fullName) {
int firstNameEndIndex = fullName.indexOf(" ");
System.out.println(fullName.substring(firstNameEndIndex + 1));
System.out.println(fullName.substring(0, firstNameEndIndex));
}
就地提取变量
要使用就地重构来提取变量, 请按照下列步骤操作:
⒈ 在编辑器中,选择要用变量替换的表达式。你可以自己做或使用智能表达式选择功能让 IntelliJ IDEA 帮助您。所以,请执行以下任一个操作:
① 突出显示表达式。然后选择主菜单或上下文菜单上的:重构|提取| 变量。
或者,按 Ctrl+Alt+V。
② 将光标放在表达式之前或内部。在主菜单或上下文菜单上选择:重构|提取变量。或按 Ctrl+Alt+V。
⒉ 将光标放在表达式之前如果找到了所选表达式的多个匹配项,请选择 "仅替换此事件" 或 "替换出现的多个实例" 弹出菜单中的所有实例。要选择所需的选项,只需单击它。或者,使用向上和向下箭头键导航到感兴趣的选项,然后按 Enter 来选择它。或内部。在主菜单或上下文菜单上选择:重构|提取变量。或按 Ctrl+Alt+V。
⒊ 指定变量的名称。执行以下任一个操作:
① 从弹出列表中选择一个建议的名称。要做到这一点,请双击合适的名称。或者,使用向上和向下箭头键导航到感兴趣的名称,并按 Enter 以选择它。
② 通过键入来编辑名称。该名称显示在带有红色边框的框中,并在您输入时进行更改。完成后,按 Enter。
如果在编辑器设置中清除了 "启用就地重构" 复选框,则将通过 "提取变量" 对话框来执行 "提取变量"。
⒈ 在编辑器中,选择要用变量替换的表达式。你可以自己做或使用智能表达式选择功能让 IntelliJ IDEA 帮助您。所以,请执行以下任一个操作:
① 突出显示表达式。然后在主菜单或上下文菜单上选择:重构| 提取| 变量。
或者,按 Ctrl+Alt+V。
② 将光标放在表达式之前或内部。在主菜单或上下文菜单上选择:重构|提取变量。或按 Ctrl+Alt+V。
在 "表达式" 弹出菜单中,选择表达式。为此,请单击所需的表达式。或者,使用向上和向下箭头键导航到感兴趣的表达式,然后按 Enter 来选择它。
该“表达式” 弹出式菜单包含适用于编辑器中当前光标位置的所有表达式。
当您浏览弹出窗口中的建议表达式时,编辑器中突出显示的代码会相应地更改。
⒉ 在 "提取变量" 对话框中:
① 指定 "名称" 字段旁边的变量名。您可以从列表中选择一个建议的名称或在 "名称" 框中键入名称。
② 如果找到了选定表达式的多个匹配项,则可以选择相应的复选框来替换所有找到的匹配项。如果您只想替换当前的匹配项,请清除 "替换所有实例" 复选框。
③ 如果你想声明新的变量final,请选中 "声明最终的复选框"(该选项仅适用于 Java)
④ 对于 ActionScript,您可以选择引入常量而不是变量。要做到这一点,请选中 "Make constant " 复选框。
请注意,IntelliJ IDEA 社区版中不支持 ActionScript。
⑤ 点击“确定”。
有关其他语言和框架特定的重构,请参阅以下各节:
⒈ 有关 JavaScript 过程,请参阅:在 JavaScript 中提取变量。
⒉ 有关 Sass 程序,请参阅:为 Sass 提取变量。