W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
IntelliJ IDEA提供各種Extract重構,以引入?yún)?shù),變量,常量,字段,方法和函數(shù)。要運行任何這些重構,請選擇要重構的表達式并選擇:Refactor|提取|<target>。您可以選擇整個表達式或將光標放在其中的任何位置,IntelliJ IDEA將幫助您進行選擇。
使用Extract Parameter(提取參數(shù))重構將函數(shù)調(diào)用中的表達式替換為參數(shù)。IntelliJ IDEA將相應地更新聲明和函數(shù)調(diào)用。新參數(shù)的默認值可以在函數(shù)體內(nèi)初始化或通過函數(shù)調(diào)用傳遞。
假設您在函數(shù)calculate_sum(i)中有一段硬編碼1的代碼。使用Extract Parameter重構,您可以使用i2參數(shù)替換此硬編碼1。新i2參數(shù)可以作為可選項或根據(jù)需要提取。
示例1:提取可選參數(shù)
提取新參數(shù)i2作為可選參數(shù)。新參數(shù)在主體calculate_sum(i)中初始化,并且show_sum()中calculate_sum(i)調(diào)用不會更改。
|
|
示例2:提取所需參數(shù)
提取新參數(shù)i2作為必需參數(shù),相應地更改show_sum()中calculate_sum(i)調(diào)用。
|
|
提取參數(shù)的操作如下:
選擇重構模式:
您可以如上所述在編輯器中(在in-place模式下)提取參數(shù), 或使用“提取參數(shù)(Extract Parameter )”對話框。這兩種方法相似,區(qū)別如下:
默認情況下,IntelliJ IDEA在in-place模式下運行Extract Parameter重構。要使用“提取參數(shù)”對話框,請在“設置/首選項”對話框(Ctrl+Alt+S)中單擊:編輯器|常規(guī)。在打開的“常規(guī)”頁面上,清除“重構”區(qū)域中的“啟用in-place模式”復選框。
使用Extract Variable(提取變量)重構將表達式替換為函數(shù)范圍的變量(var),塊范圍的變量(let)或常量。這種重構使您的源代碼更易于閱讀和維護。它還可以幫助您避免使用硬編碼常量,而無需對其值或目的進行任何解釋。
假設您在return語句中有一個帶有部分硬編碼表達式的函數(shù):
Parenizor.method('toString', function ()) {
return '(' + this.getValue() + ')';
}
使用Extract Variable重構,您可以使用變量替換'(' + this.getValue() + ')'表達式,例如string。提取變量的范圍取決于其聲明(var或let)中使用的語句以及聲明新變量的上下文(函數(shù)內(nèi)部或外部)。
示例1:使用let語句聲明提取塊范圍的變量
從return語句中的'(' + this.getValue() + ')'表達式中提取變量。新變量使用let語句在Parenizor.method('toString', function ())內(nèi)部聲明。
|
|
示例2:提取變量并在任何函數(shù)外聲明它
變量appName從navigator.appName表達式中提取并在任何函數(shù)之外使用var語句聲明。
|
|
提取變量的操作如下所示:
選擇重構模式
您可以如上所述在編輯器中(在in-place模式下)提取變量, 或使用“提取變量”對話框。默認情況下,IntelliJ IDEA在in-place模式下運行Extract Variable重構。要使用“提取變量”對話框,請在“設置/首選項”對話框(Ctrl+Alt+S)中單擊:編輯器|常規(guī)。在打開的“常規(guī)”頁面上,清除“重構”區(qū)域中的“啟用in-place模式”復選框。
在Extract Field重構宣布一個新的字段,并使用選定的表達對其進行初始化。原始表達式將替換為字段的用法。
在下面的示例中,提取相同的_calcArea字段。這些示例說明了初始化提取字段的三種不同方法。
示例1:在封閉方法中初始化提取的字段
|
|
示例2:提取的字段在其聲明中初始化
|
|
示例3:提取的字段在類的構造函數(shù)中初始化
|
|
提取字段的操作如下:
該Extract Method重構,您可以使用提取的代碼創(chuàng)建命名方法或函數(shù)。當調(diào)用Extract Method重構時,IntelliJ IDEA會檢測作為所選代碼片段輸入的變量以及作為其輸出的變量。檢測到的輸出變量用作提取的方法或函數(shù)的返回值。
在下面的示例中,從c = a + b;表達式中提取函數(shù)。
實例1:從另一個函數(shù)內(nèi)的表達式提取一個全局范圍函數(shù)
調(diào)用重構的c = a + b;表達式,位于MyFunction()函數(shù)內(nèi)部。選擇全球目標范圍。
例1.1:生成函數(shù)聲明
|
|
例1.2:提取的函數(shù)在表達式中聲明
|
|
實例2:從任何函數(shù)之外的表達式提取一個全局范圍函數(shù)
調(diào)用重構的c = a + b;表達式,位于任何函數(shù)之外。因此,無法選擇目標范圍。
例2.1:生成函數(shù)聲明
|
|
例2.2:提取的函數(shù)在表達式中聲明
|
|
示例3:在封閉函數(shù)內(nèi)提取具有定義的函數(shù)
調(diào)用重構的c = a + b;表達式,位于MyFunction()函數(shù)內(nèi)部。選擇函數(shù)MyFunction目標范圍。
|
|
提取函數(shù)的操作如下:
如何在默認情況下打開“Extract Function”對話框:
該Extract Superclass(提取超類)重構創(chuàng)建基于當前類的成員一個新的抽象類。創(chuàng)建的類會自動擴展。
假設您有一個類AccountingDepartment,并且您希望來自它的printName()方法能夠重新使用。
class AccountingDepartment {
name;
printName() {
console.log("Department name: " + this.name);
}
printMeeting() {
console.log("The Accounting Department meets each Monday at 10am.");
}
generateReports() {
console.log("Generating accounting reports...");
}
}
您可以提取超類Department并在其中包含printName該Name字段。
class Department {
name;
printName() {
console.log("Department name: " + this.name);
}
}
class AccountingDepartment extends Department {
printMeeting() {
console.log("The Accounting Department meets each Monday at 10am.");
}
generateReports() {
console.log("Generating accounting reports...");
}
}
提取超類的操作如下:
Extract Vue Component(提取Vue組件)重構允許您從現(xiàn)有組件中提取新的Vue.js組件,而無需任何復制和粘貼。請注意,此重構僅適用于in-place模式,因此請確保在“編輯器:常規(guī)”頁面上選中“啟用in-place模式”復選框 。
提取Vue組件的操作方法如下:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: