Ý tưởng Intellij - Tái cấu trúc mã

Trong chương này, chúng ta sẽ tìm hiểu về Code Refactoring và cách nó hoạt động trong IntelliJ. Tái cấu trúc mã là tái cấu trúc mã mà không thay đổi chức năng và khả năng sử dụng của nó. Tái cấu trúc mã có thể được thực hiện để cải thiện khả năng đọc mã, hiệu suất hoặc để loại bỏ chức năng không sử dụng / trùng lặp. IntelliJ cung cấp hỗ trợ tuyệt vời cho việc tái cấu trúc mã. Chương này thảo luận về các hành động tái cấu trúc mã khác nhau.

Đổi tên

Hành động đổi tên có thể được sử dụng để đổi tên phương thức, tham số của nó, thuộc tính lớp, biến cục bộ, v.v. Hãy để chúng tôi tạo lớp sau trong 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);
   }
}

Bây giờ, chúng ta hãy đổi tên Employee lớp đến Person. Hành động này sẽ thực hiện các sửa đổi trong các hàm tạo vàmain() phương pháp -

  • Chọn từ Nhân viên

  • Đi đến Refactor → Rename và đổi tên nó bằng Person.

Thay thế các bản sao mã

Đây là một trong những hành động tái cấu trúc mạnh mẽ. IntelliJ xác định các bản sao mã và thay thế nó bằng mã thích hợp. Hãy để chúng tôi giới thiệu về nhân bản mã và cấu trúc lại nó. Nhập mã sau vào Trình chỉnh sửa -

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();
   }
}

Trong ví dụ này, Nhân viên (Tên chuỗi, Địa chỉ chuỗi, int tuổi) nhà xây dựng và public void setData (Tên chuỗi, địa chỉ chuỗi, intage) hoàn toàn giống hệt nhau. Sau khi cấu trúc lại, hàm khởi tạo Employee (String name, String address, int age) được sửa đổi như sau:

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

Để thay thế các bản sao -

  • Đi tới Refactor → Tìm và thay thế các bản sao mã.

  • Chọn phạm vi cơ cấu lại và làm theo các bước trên màn hình để hoàn thành hành động.

Sao chép cấu trúc lại

Trong phần này, chúng ta sẽ hiểu cách sao chép lớp này sang lớp khác. Hãy để chúng tôi sao chép lớp Nhân viên sang lớp Người. Chúng tôi có thể sao chép nó vào mô-đun hiện có hoặc một mô-đun mới. IntelliJ sẽ thực hiện các thay đổi cần thiết tùy thuộc vào nó. Làm theo các bước sau để thực hiện tái cấu trúc bản sao -

  • Đi đến Refactor → Copy, nó sẽ mở hộp thoại.

  • Nhập tên mới và gói đích.

  • Nhấp vào nút OK và nó sẽ thực hiện những việc cần thiết.

Di chuyển cấu trúc lại

Tái cấu trúc di chuyển tương tự như sao chép nhưng thay vì tạo một bản sao khác, nó di chuyển mã sang một gói khác hoặc biến nó thành lớp bên trong của lớp khác.

Làm theo các bước sau để thực hiện tái cấu trúc di chuyển -

  • Đi tới, Refactor → Di chuyển.

  • Một cửa sổ mới sẽ xuất hiện.

  • Chọn một trong các tùy chọn theo sự lựa chọn của bạn và nhấp vào Refactor.

Xóa an toàn

Hành động Xóa an toàn sẽ chỉ xóa đối tượng khi nó không được tham chiếu ở bất kỳ đâu trong dự án. Đích cho tùy chọn này có thể là lớp, giao diện, phương thức, trường hoặc tham số.

Hãy để chúng tôi thấy điều này trong hành động. Nhập mã sau vào Trình chỉnh sửa -

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

Làm theo các bước sau để thực hiện hành động xóa an toàn -

  • Chọn sayHello() phương pháp.

  • Nhấp chuột phải vào nó và chọn Refactor → Safe Delete Lựa chọn.

  • Khi phương thức sayHello () đang được sử dụng, nó sẽ hiển thị lỗi như trong ảnh chụp màn hình sau:

Thay đổi chữ ký

Hành động sửa đổi chữ ký phương thức. Nó có thể thay đổi tên phương thức, tham số, kiểu, giá trị trả về, v.v. Chúng ta hãy lấy một phương thức từ ví dụ trên và thay đổi chữ ký của nó.

Làm theo các bước sau để thực hiện hành động Thay đổi Chữ ký -

  • Chọn phương pháp.

  • Nhấp chuột phải vào nó và chọn Refactor → Thay đổi hành động chữ ký

  • Một cửa sổ mới sẽ xuất hiện trong đó bạn có thể thực hiện các thao tác trên.

  • Ở cuối cửa sổ, nó hiển thị bản xem trước của chữ ký mới.

Nhập loại

Di chuyển kiểu thay đổi kiểu của biểu tượng. Biểu tượng này có thể là một tham số phương thức hoặc thuộc tính lớp. Chúng ta hãy xem xét phương pháp sau trước khi thực hiện hành động bắt buộc -

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

Làm theo các bước sau để thực hiện di chuyển kiểu -

  • Chọn kiểu dữ liệu "Chuỗi".

  • Nhấp chuột phải vào nó và chọn Refactor → Type migration.

  • Nhập kiểu dữ liệu bắt buộc vào hộp văn bản đã cho.

  • Chọn phạm vi và nhấp vào nút Refactor.