調用提取方法重構時,IntelliJ IDEA 分析選定的代碼塊并檢測作為所選代碼片段的輸入的變量以及為其輸出的變量。
如果只有一個輸出變量,則它將其用作提取方法的返回值。如果有多個輸出變量,則可能不應用提取方法重構,并出現(xiàn)錯誤消息。
在這種情況下,允許提取方法工作有幾種變通辦法。例如,您可能會引入一個包含所有輸出值的特殊數(shù)據(jù)類。
提取方法重構具有以下限制:
⒈ 重構在自動模式下不使用多個輸出值。在應用重構之前,您必須更改您的代碼。
⒉ 重構對于有條件地從包含方法返回的代碼片段不起作用,并且不放在它的末尾。
重構前 |
重構后 |
---|---|
|
|
|
|
提取方法重構
若要提取方法,請按照下列步驟操作:
⒈ 在編輯器中,選擇要轉換成方法或函數(shù)的代碼塊。構成方法的代碼片段不一定必須是一組語句。它也可能是代碼中某處使用的表達式。
⒉ 在主菜單或選擇的上下文菜單上,選擇:重構| 提取| 方法或者按 Ctrl+Alt+M。
⒊ 在打開的 "提取方法" 對話框中,指定新函數(shù)的名稱。
⒋ 要創(chuàng)建一個靜態(tài)方法,請選中 "聲明靜態(tài)" 復選框。
⒌ 在 "參數(shù)" 區(qū)域中,請執(zhí)行以下操作:
① 通過選擇/清除相應的復選框來指定要作為方法參數(shù)傳遞的變量。
如果某個參數(shù)被禁用,則將在提取的方法中創(chuàng)建一個具有初始值的相應類型的局部變量,以便您必須手動輸入適當值的初始值設定項。
② 通過雙擊相應的參數(shù)行并輸入新名稱來重命名所需的參數(shù)。
⒍ 在可見性區(qū)域中定義方法的可見性范圍。
⒎ 在 "簽名預覽" 窗格中檢查結果,然后單擊 "確定" 創(chuàng)建方法。選定的代碼片段將被方法調用替換。此外,IntelliJ IDEA 將建議替換在當前類中找到的任何類似的代碼片段。
IntelliJ IDEA 檢測到可能接受不同值作為參數(shù)的重復代碼片段,并以差異查看器的格式顯示以下建議:
如果單擊 "接受簽名更改" 按鈕,所有遇到的重復項都將突出顯示,IntelliJ IDEA 將要求您進行確認:
最后,在用方法調用替換所需的重復項之后,您將得到以下代碼:
您也可以從重復的代碼段中提取方法,IntelliJ IDEA 在重復分析過程中發(fā)現(xiàn)的。遇到的重復項顯示在 "重復" 工具窗口中,您可以在其中嘗試用方法調用替換它們。