重構是什么?
在代碼寫好之后改進它的設計。
重構分類:物理結構、類層次結構、類內部結構。
| 名稱 |
快捷鍵
|
直譯 | 作用范圍 |
描述
|
| Rename | Alt + Shift + R | 可以對任意變量、類、方法、包名、文件夾進行重新命名,並且所有使用到的地方會統一進行修改。 | ||
| Move | Alt + Shift + V | 字段 | 把字段移到其他類、把類移到其他包 |
| 名稱 |
快捷鍵
|
直譯 | 作用范圍 |
描述
|
| Change Method Signature | Alt + Shift + C | 修改方法簽名 | 方法 | 對方法進行操作,可以修改方法名、訪問權限、增加刪除方法參數、修改參數順序、添加方法異常 |
| Extract Method | Alt + Shift + M | 提取為方法 | 方法 | 任意選中一塊代碼,自動轉換為方法,自動添加參數返回類型。 |
| Extract Local Variable | Alt + Shift + L | 提取局部變量 | 字符/數字 | 通常用於表達式,把其中一個抽取為本地的變量,例如3 + 5 抽取為 int i = 3; |
| Extract Constant | Ctrl+1 Extract to Constant | 提取常量 | 字符/數字 | 把任意位置的字符串或者數字抽取為一個靜態全局常量。所有使用此字符或者數字的也會相應的被替換為使用常量。 |
| Inline | Alt + Shift + I | 內聯 | 方法 | 把調用此方法的地方直接替換成此方法的內容。選中任意方法才可使用此功能。(有All invocations 與 Only the selected invocation兩個選項) |
| 名稱 |
快捷鍵
|
直譯 | 作用范圍 |
描述
|
| Convert Local Variable to Field | Alt + Shift + K | 局部變量轉變為全局變量 | 局部變量 | 把局部變量轉變為全部變量,可以重新修改變量名。 |
| Convert Anonymous Class to Nested | 匿名類轉換為嵌套內部類 | 匿名類 | 可以設置類型,內部包含字段類型等。 | |
| Move Type to New File | 移動類到新的文件 | 嵌套類 | 以嵌套類創建一個新的類文件 |
| 名稱 |
快捷鍵
|
直譯 | 作用范圍 |
描述
|
| Extract Supperclass | 提取父類 | 提取選中字段或方法放置到其父類中(注意提取方法時,先提取其中使用的字段) | ||
| Extract Interface | 提取接口 | 類 | 從一個類的方法生成一個接口(僅當前類的方法會變為接口,其他使用此方法的地方不會) | |
| Use Supertype Where Possible | 盡可能使用父類型 | 類 | 把選中引用向上轉型,變成其父類的引用 | |
| Push Down | 下推 | 變量、方法 | 把選中方法從父類移到子類中,父類中響應方法變為抽象方法 | |
| Pull Up | 上移 | 變量、方法 | 與Push Down相反,把子類的方法上移到父類中 |
| 名稱 |
快捷鍵
|
直譯 | 作用范圍 |
描述
|
| Extract Class | 提取為類 | 字段 | 把所有選中字段提到新類中,可以選擇新建文件也可以使內部類 | |
| Introduce Parameter Object | 引入參數對象 | 方法 | 把方法參數抽取為一個類(避免參數在方法內引用被修改異常) |
| 名稱 |
快捷鍵
|
直譯 | 作用范圍 |
描述
|
| Introduce Indirection | 讓其他類可調用當前類某方法 | |||
| Introduce Factory | 引用工廠 | 構造函數 | 用方法返回一個對象 | |
| Introduce Parameter | 引入參數 | 將字段抽取為方法中的參數 | ||
| Encapsulate Filed | 封裝字段 | 為字段提供setter/getter方法 |
Introduce Factory
Selected entity is not a constructor invocation or definition.
| 名稱 |
快捷鍵
|
直譯 | 作用范圍 |
描述
|
| Generalize Declared Type | 把非原始對象字段(或方法參數)替換為其父類型。 | |||
| Infer Generic Type Arguments | 為原始形式的那些類型推測恰當的泛型類型 |
Generalize Declared Type 可能出現的異常
Generalize Declared Type is not supported on primitive types. 不支持原始類型
| 名稱 |
快捷鍵
|
直譯 | 作用范圍 |
描述
|
| Migrate JAR File | ||||
| Create Script | ||||
| Apply Script | ||||
| History |
