Intellij Idea - การปรับโครงสร้างโค้ด

ในบทนี้เราจะเรียนรู้เกี่ยวกับ Code Refactoring และวิธีการทำงานใน 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() วิธีการ -

  • เลือกคำว่าพนักงาน

  • ไปที่ Refactor → Rename และเปลี่ยนชื่อเป็นบุคคล

แทนที่รหัสซ้ำ

นี่คือหนึ่งในการปรับโครงสร้างใหม่ที่มีประสิทธิภาพ 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();
   }
}

ในตัวอย่างนี้พนักงาน (ชื่อสตริงที่อยู่สตริง int อายุ) ตัวสร้างและ public void setData (ชื่อสตริงที่อยู่สตริง intอายุ) วิธีการเหมือนกันทุกประการ หลังจากการปรับโครงสร้างใหม่ตัวสร้างพนักงาน (ชื่อสตริงที่อยู่สตริงอายุ int) จะได้รับการแก้ไขดังนี้ -

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

เพื่อแทนที่รายการที่ซ้ำกัน -

  • ไปที่ Refactor →ค้นหาและแทนที่รหัสซ้ำ

  • เลือกขอบเขตตัวอ้างอิงและทำตามขั้นตอนบนหน้าจอเพื่อดำเนินการให้เสร็จสิ้น

คัดลอก Refactoring

ในส่วนนี้เราจะเข้าใจวิธีการคัดลอกคลาสหนึ่งไปยังอีกคลาสหนึ่ง ให้เราคัดลอกคลาส Employee เป็นคลาส Person เราสามารถคัดลอกไปยังโมดูลที่มีอยู่หรือโมดูลใหม่ IntelliJ จะทำการเปลี่ยนแปลงที่จำเป็นขึ้นอยู่กับมัน ทำตามขั้นตอนเหล่านี้เพื่อทำการคัดลอก refactoring -

  • ไปที่ Refactor → Copyมันจะเปิดกล่องโต้ตอบ

  • ป้อนชื่อและแพ็กเกจปลายทางใหม่

  • คลิกที่ปุ่มตกลงและจะทำตามความจำเป็น

ย้าย Refactoring

การปรับโครงสร้างการย้ายจะคล้ายกับการคัดลอก แต่แทนที่จะทำสำเนาอีกครั้งจะเป็นการย้ายรหัสไปยังแพ็คเกจอื่นหรือทำให้เป็นคลาสภายในของคลาสอื่น

ทำตามขั้นตอนเหล่านี้เพื่อทำการย้าย refactoring -

  • ไปที่ Refactor → Move

  • หน้าต่างใหม่จะปรากฏขึ้น

  • เลือกหนึ่งในตัวเลือกตามที่คุณต้องการแล้วคลิกที่ Refactor

ปลอดภัยลบ

การดำเนินการ Safe Delete จะลบออบเจ็กต์เฉพาะเมื่อไม่มีการอ้างอิงที่ใดก็ได้ในโปรเจ็กต์ เป้าหมายสำหรับอ็อพชันนี้อาจเป็นคลาสอินเทอร์เฟซเมธอดฟิลด์หรือพารามิเตอร์

ให้เราเห็นในการดำเนินการ พิมพ์รหัสต่อไปนี้ใน Editor -

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

ทำตามขั้นตอนเหล่านี้เพื่อดำเนินการลบอย่างปลอดภัย -

  • เลือกไฟล์ sayHello() วิธี.

  • คลิกขวาที่ไฟล์แล้วเลือกไฟล์ Refactor → Safe Delete ตัวเลือก

  • เนื่องจากมีการใช้เมธอด sayHello () มันจะแสดงข้อผิดพลาดดังภาพหน้าจอต่อไปนี้ -

เปลี่ยนลายเซ็น

การดำเนินการแก้ไขลายเซ็นของวิธีการ สามารถเปลี่ยนชื่อเมธอดพารามิเตอร์ประเภทค่าส่งคืนและอื่น ๆ ให้เราใช้วิธีการจากตัวอย่างข้างต้นและเปลี่ยนลายเซ็น

ทำตามขั้นตอนเหล่านี้เพื่อดำเนินการเปลี่ยนลายเซ็น -

  • เลือกวิธีการ

  • คลิกขวาที่มันแล้วเลือก Refactor → Change signature action

  • หน้าต่างใหม่จะปรากฏขึ้นซึ่งคุณสามารถดำเนินการข้างต้นได้

  • ที่ด้านล่างของหน้าต่างจะแสดงตัวอย่างลายเซ็นใหม่

พิมพ์ Migration

การย้ายประเภทจะเปลี่ยนประเภทของสัญลักษณ์ สัญลักษณ์นี้สามารถเป็นพารามิเตอร์วิธีการหรือแอตทริบิวต์คลาส ให้เราพิจารณาวิธีการต่อไปนี้ก่อนดำเนินการตามที่กำหนด -

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

ทำตามขั้นตอนเหล่านี้เพื่อทำการโอนย้ายประเภท -

  • เลือกประเภทข้อมูล "สตริง"

  • คลิกขวาแล้วเลือก Refactor → Type migration.

  • ป้อนประเภทข้อมูลที่ต้องการในกล่องข้อความที่กำหนด

  • เลือกขอบเขตและคลิกที่ปุ่ม Refactor