阅读(4978) (17)

IntelliJ IDEA提取变量

2017-11-07 11:18:10 更新

IntelliJ IDEA "提取变量重构" 将所选表达式的结果放入一个变量中。它声明一个新的变量,并使用该表达式作为初始值设定项。原始表达式被替换为新变量(请参见下面的示例)。

在 Java 中,新变量的类型对应于由表达式返回的类型。有一个声明新变量的选项 final。 

要执行这个重构,您可以使用:

  • 就地重构。在这种情况下,你可以在编辑器中指定新的名字。
  • 重构对话框,你可以在其中指定所有必需的信息。要使这样一个对话框可访问,您必须清除 "编辑器设置" 中的 "就地" 模式下的复选框。

您可以自己选择要用变量替换的表达式,也可以使用智能表达式选择。在这种情况下,IntelliJ IDEA 将帮助您选择所需的表达式。

这个重构也可用于 JavaScript 和 Sass。

Java 示例

示例-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));
}

就地提取变量

要使用就地重构来提取变量, 请按照下列步骤操作:

  1. 在编辑器中,选择要用变量替换的表达式。你可以自己做或使用智能表达式选择功能让 IntelliJ IDEA 帮助您。所以,请执行以下任一个操作:
    • 突出显示表达式。然后选择主菜单或上下文菜单上的:重构|提取| 变量。

      或者,按 Ctrl+Alt+V。


      IntelliJ IDEA提取变量
    • 将光标放在表达式之前或内部。在主菜单或上下文菜单上选择:重构|提取变量。或按 Ctrl+Alt+V。
      IntelliJ IDEA提取变量
      IntelliJ IDEA提取变量
  2. 如果找到了所选表达式的多个匹配项,请选择 "仅替换此事件" 或 "替换出现的多个实例" 弹出菜单中的所有实例。要选择所需的选项,只需单击它。或者,使用向上和向下箭头键导航到感兴趣的选项,然后按 Enter 来选择它。
    IntelliJ IDEA提取变量
  3. 指定变量的名称。执行以下任一个操作:
    • 从弹出列表中选择一个建议的名称。要做到这一点,请双击合适的名称。或者,使用向上和向下箭头键导航到感兴趣的名称,并按 Enter 以选择它。
      IntelliJ IDEA提取变量
    • 通过键入来编辑名称。该名称显示在带有红色边框的框中,并在您输入时进行更改。完成后,按 Enter。
      IntelliJ IDEA提取变量

使用对话框提取变量

如果在编辑器设置中清除了 "启用就地重构" 复选框,则将通过 "提取变量" 对话框来执行 "提取变量"。

IntelliJ IDEA提取变量

  1. 在编辑器中,选择要用变量替换的表达式。你可以自己做或使用智能表达式选择功能让 IntelliJ IDEA 帮助您。所以,请执行以下任一个操作:
    • 突出显示表达式。然后在主菜单或上下文菜单上选择:重构| 提取| 变量。

      或者,按 Ctrl+Alt+V。

    • 将光标放在表达式之前或内部。在主菜单或上下文菜单上选择:重构|提取变量。或按 Ctrl+Alt+V。

      在 "表达式" 弹出菜单中,选择表达式。为此,请单击所需的表达式。或者,使用向上和向下箭头键导航到感兴趣的表达式,然后按 Enter 来选择它。

      该“表达式” 弹出式菜单包含适用于编辑器中当前光标位置的所有表达式。

      当您浏览弹出窗口中的建议表达式时,编辑器中突出显示的代码会相应地更改。

  2. 在 "提取变量" 对话框中:
    1. 指定 "名称" 字段旁边的变量名。您可以从列表中选择一个建议的名称或在 "名称" 框中键入名称。
    2. 如果找到了选定表达式的多个匹配项,则可以选择相应的复选框来替换所有找到的匹配项。如果您只想替换当前的匹配项,请清除 "替换所有实例" 复选框。
    3. 如果你想声明新的变量final,请选中 "声明最终的复选框"(该选项仅适用于 Java)
    4. 对于 ActionScript,您可以选择引入常量而不是变量。要做到这一点,请选中 "Make constant " 复选框。

      请注意,IntelliJ IDEA 社区版中不支持 ActionScript。

    5. 点击“确定”。

有关其他语言和框架特定的重构,请参阅以下各节:

  • 有关 JavaScript 过程,请参阅:在 JavaScript 中提取变量。
  • 有关 Sass 程序,请参阅:为 Sass 提取变量。