IntelliJ IDEA "提取變量重構(gòu)" 將所選表達(dá)式的結(jié)果放入一個(gè)變量中。它聲明一個(gè)新的變量,并使用該表達(dá)式作為初始值設(shè)定項(xiàng)。原始表達(dá)式被替換為新變量(請(qǐng)參見(jiàn)下面的示例)。
在 Java 中,新變量的類型對(duì)應(yīng)于由表達(dá)式返回的類型。有一個(gè)聲明新變量的選項(xiàng) final。
要執(zhí)行這個(gè)重構(gòu),您可以使用:
⒈ 就地重構(gòu)。在這種情況下,你可以在編輯器中指定新的名字。
⒉ 重構(gòu)對(duì)話框,你可以在其中指定所有必需的信息。要使這樣一個(gè)對(duì)話框可訪問(wèn),您必須清除 "編輯器設(shè)置" 中的 "就地" 模式下的復(fù)選框。
您可以自己選擇要用變量替換的表達(dá)式,也可以使用智能表達(dá)式選擇。在這種情況下,IntelliJ IDEA 將幫助您選擇所需的表達(dá)式。
這個(gè)重構(gòu)也可用于 JavaScript 和 Sass。
示例-1
提取變量重構(gòu)前:
public void method() {
int a = 1;
...
int b = a + anotherClass.intValue();
int c = b + anotherClass.intValue();
}
提取變量重構(gòu)后:
public void method() {
int a = 1;
...
int number = anotherClass.intValue();
int b = a + number;
int c = b + number;
示例-2
提取變量重構(gòu)前:
public void method() {
int a = anotherClass.innerClass.i;
int b = anotherClass.innerClass.j;
}
提取變量重構(gòu)后:
public void method() {
AnotherClass.InnerClass aClass = anotherClass.innerClass;
int a = aClass.i;
int b = aClass.j;
}
示例-3
提取變量重構(gòu)前:
static void printNames(final String fullName) {
System.out.println(fullName.substring(fullName.indexOf(" ") + 1));
System.out.println(fullName.substring(0, fullName.indexOf(" ")));
}
提取變量重構(gòu)后:
static void printNames(final String fullName) {
int firstNameEndIndex = fullName.indexOf(" ");
System.out.println(fullName.substring(firstNameEndIndex + 1));
System.out.println(fullName.substring(0, firstNameEndIndex));
}
就地提取變量
要使用就地重構(gòu)來(lái)提取變量, 請(qǐng)按照下列步驟操作:
⒈ 在編輯器中,選擇要用變量替換的表達(dá)式。你可以自己做或使用智能表達(dá)式選擇功能讓 IntelliJ IDEA 幫助您。所以,請(qǐng)執(zhí)行以下任一個(gè)操作:
① 突出顯示表達(dá)式。然后選擇主菜單或上下文菜單上的:重構(gòu)|提取| 變量。
或者,按 Ctrl+Alt+V。
② 將光標(biāo)放在表達(dá)式之前或內(nèi)部。在主菜單或上下文菜單上選擇:重構(gòu)|提取變量。或按 Ctrl+Alt+V。
⒉ 將光標(biāo)放在表達(dá)式之前如果找到了所選表達(dá)式的多個(gè)匹配項(xiàng),請(qǐng)選擇 "僅替換此事件" 或 "替換出現(xiàn)的多個(gè)實(shí)例" 彈出菜單中的所有實(shí)例。要選擇所需的選項(xiàng),只需單擊它。或者,使用向上和向下箭頭鍵導(dǎo)航到感興趣的選項(xiàng),然后按 Enter 來(lái)選擇它。或內(nèi)部。在主菜單或上下文菜單上選擇:重構(gòu)|提取變量。或按 Ctrl+Alt+V。
⒊ 指定變量的名稱。執(zhí)行以下任一個(gè)操作:
① 從彈出列表中選擇一個(gè)建議的名稱。要做到這一點(diǎn),請(qǐng)雙擊合適的名稱。或者,使用向上和向下箭頭鍵導(dǎo)航到感興趣的名稱,并按 Enter 以選擇它。
② 通過(guò)鍵入來(lái)編輯名稱。該名稱顯示在帶有紅色邊框的框中,并在您輸入時(shí)進(jìn)行更改。完成后,按 Enter。
如果在編輯器設(shè)置中清除了 "啟用就地重構(gòu)" 復(fù)選框,則將通過(guò) "提取變量" 對(duì)話框來(lái)執(zhí)行 "提取變量"。
⒈ 在編輯器中,選擇要用變量替換的表達(dá)式。你可以自己做或使用智能表達(dá)式選擇功能讓 IntelliJ IDEA 幫助您。所以,請(qǐng)執(zhí)行以下任一個(gè)操作:
① 突出顯示表達(dá)式。然后在主菜單或上下文菜單上選擇:重構(gòu)| 提取| 變量。
或者,按 Ctrl+Alt+V。
② 將光標(biāo)放在表達(dá)式之前或內(nèi)部。在主菜單或上下文菜單上選擇:重構(gòu)|提取變量。或按 Ctrl+Alt+V。
在 "表達(dá)式" 彈出菜單中,選擇表達(dá)式。為此,請(qǐng)單擊所需的表達(dá)式。或者,使用向上和向下箭頭鍵導(dǎo)航到感興趣的表達(dá)式,然后按 Enter 來(lái)選擇它。
該“表達(dá)式” 彈出式菜單包含適用于編輯器中當(dāng)前光標(biāo)位置的所有表達(dá)式。
當(dāng)您瀏覽彈出窗口中的建議表達(dá)式時(shí),編輯器中突出顯示的代碼會(huì)相應(yīng)地更改。
⒉ 在 "提取變量" 對(duì)話框中:
① 指定 "名稱" 字段旁邊的變量名。您可以從列表中選擇一個(gè)建議的名稱或在 "名稱" 框中鍵入名稱。
② 如果找到了選定表達(dá)式的多個(gè)匹配項(xiàng),則可以選擇相應(yīng)的復(fù)選框來(lái)替換所有找到的匹配項(xiàng)。如果您只想替換當(dāng)前的匹配項(xiàng),請(qǐng)清除 "替換所有實(shí)例" 復(fù)選框。
③ 如果你想聲明新的變量final,請(qǐng)選中 "聲明最終的復(fù)選框"(該選項(xiàng)僅適用于 Java)
④ 對(duì)于 ActionScript,您可以選擇引入常量而不是變量。要做到這一點(diǎn),請(qǐng)選中 "Make constant " 復(fù)選框。
請(qǐng)注意,IntelliJ IDEA 社區(qū)版中不支持 ActionScript。
⑤ 點(diǎn)擊“確定”。
有關(guān)其他語(yǔ)言和框架特定的重構(gòu),請(qǐng)參閱以下各節(jié):
⒈ 有關(guān) JavaScript 過(guò)程,請(qǐng)參閱:在 JavaScript 中提取變量。
⒉ 有關(guān) Sass 程序,請(qǐng)參閱:為 Sass 提取變量。