IntelliJ IDEA - 程式碼重構



在本節中,我們將學習程式碼重構以及它在 IntelliJ 中的工作原理。程式碼重構是在不改變程式碼功能和可用性的前提下重組程式碼。程式碼重構可以用來提高程式碼的可讀性、效能或刪除未使用的/重複的功能。IntelliJ 為程式碼重構提供了強大的支援。本章討論了各種程式碼重構操作。

重新命名

重新命名操作可用於重新命名方法、方法引數、類屬性、區域性變數等。讓我們在 IntelliJ 中建立一個如下所示的類。

public class Employee {
   private String name;
   private String address;
   private int age;
   public Employee() {
      this("Jarvis", "Palo Alto", 35);
   }
   public Employee(String name, String address, int age) {
      this.name = name;
      this.address = address;
      this.age = age;
   }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
   public String getAddress() {
      return address;
   }
   public void setAddress(String address) {
      this.address = address;
   }
   public int getAge() {
      return age;
   }
   public void setAge(int age) {
      this.age = age;
   }
   
   @Override
   public String toString() {
      return "Employee{" +
      "name='" + name + '\'' +
      ", address='" + address + '\'' +
      ", age=" + age +
      '}';
   }
   public static void main(String args[]) {
      Employee e = new Employee();
      System.out.println(e);
   }
}

現在,讓我們將**Employee**類重新命名為**Person**。此操作將在建構函式和**main()**方法中進行修改 -

  • 選擇 Employee 字樣

  • 轉到**Refactor → Rename**並將其重新命名為 Person。

Rename Actions

替換程式碼重複

這是強大的重構操作之一。IntelliJ 識別程式碼重複並將其替換為相應的程式碼。讓我們引入程式碼重複並進行重構。在編輯器中輸入以下程式碼 -

public class Employee {
   private String name;
   private String address;
   private int age;
   public Employee() {
      this("Jarvis", "Palo Alto", 35);
   }
   public Employee(String name, String address, int age) {
      this.name = name;
      this.address = address;
      this.age = age;
   }
   public void setData(String name, String address,  int age) {
      this.name = name;
      this.address = address;
      this.age = age;
   }
   public void showEmployeeDetail() {
      System.out.println("Name = " + name + ", Address = " + address + ", Age = " + age);
   }
   public static void main(String args[]) {
      Employee e = new Employee();
      e.showEmployeeDetail();
   }
} 

在此示例中,Employee(String name, String address, **int** age) 建構函式和**public void** setData(String name, String address, **int** age) 方法完全相同。重構後,Employee(String name, String address, int age) 建構函式將修改如下 -

public Employee(String name, String address, int age) {
   setData(name, address, age);
}

要替換重複項 -

  • 轉到 Refactor → Find and Replace Code Duplicates。

  • 選擇重構範圍並按照螢幕上的步驟完成操作。

Replace Code Duplicates

複製重構

在本節中,我們將瞭解如何將一個類複製到另一個類。讓我們將 Employee 類複製到 Person 類。我們可以將其複製到現有模組或新模組中。IntelliJ 將根據需要進行相應的更改。請按照以下步驟執行復制重構 -

  • 轉到**Refactor → Copy**,它將開啟對話方塊。

  • 輸入新名稱和目標包。

  • 單擊“確定”按鈕,它將完成必要操作。

Copy Class

移動重構

移動重構類似於複製,但它不是建立另一個副本,而是將程式碼移動到不同的包或將其作為另一個類的內部類。

請按照以下步驟執行移動重構 -

  • 轉到 Refactor → Move。

  • 將出現一個新視窗。

  • 根據您的選擇選擇其中一個選項,然後單擊 Refactor。

Move Refactoring

安全刪除

安全刪除操作僅在專案中任何地方都沒有引用物件時才會刪除該物件。此選項的目標可以是類、介面、方法、欄位或引數。

讓我們看看它的實際操作。在編輯器中輸入以下程式碼 -

public class HelloWorld {
   static void sayHello() {
      System.out.println("Hello, World !!!");
   }
   public static void main(String[] args) {
      sayHello();
   }
}

請按照以下步驟執行安全刪除操作 -

  • 選擇**sayHello()**方法。

  • 右鍵單擊它並選擇**Refactor → Safe Delete**選項。

  • 由於 sayHello() 方法正在使用中,因此它將顯示如下螢幕截圖中的錯誤 -

Safe Delete Action

更改簽名

此操作修改方法簽名。它可以更改方法名稱、方法引數、型別、返回值等。讓我們從上面的示例中獲取一個方法並更改其簽名。

請按照以下步驟執行更改簽名操作 -

  • 選擇方法。

  • 右鍵單擊它並選擇 Refactor → Change signature 操作

  • 將出現一個新視窗,您可以在其中執行上述操作。

  • 在視窗底部,它顯示了新簽名的預覽。

Change Signature

型別遷移

型別遷移更改符號的型別。此符號可以是方法引數或類屬性。讓我們在執行所需操作之前考慮以下方法 -

static void sayHello(String name) {
   System.out.println(name);
}

請按照以下步驟執行型別遷移 -

  • 選擇“String”資料型別。

  • 右鍵單擊它並選擇**Refactor → Type migration**。

Type Migration
  • 在給定的文字框中輸入所需的資料型別。

  • 選擇範圍並單擊 Refactor 按鈕。

廣告

© . All rights reserved.