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