Intellij 아이디어-코드 리팩토링

이 장에서는 코드 리팩토링과 IntelliJ에서 작동하는 방법에 대해 알아 봅니다. 코드 리팩토링은 기능과 유용성을 변경하지 않고 코드를 재구성하는 것입니다. 코드 리팩토링은 코드 가독성, 성능을 향상 시키거나 사용되지 않는 / 중복 기능을 제거하기 위해 수행 될 수 있습니다. IntelliJ는 코드 리팩토링에 대한 훌륭한 지원을 제공합니다. 이 장에서는 다양한 코드 리팩토링 작업에 대해 설명합니다.

이름 바꾸기

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 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 Person으로 이름을 바꿉니다.

중복 된 코드 교체

이것은 강력한 리팩토링 작업 중 하나입니다. 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 나이) 생성자 및 public void setData (문자열 이름, 문자열 주소, intage) 방법은 정확히 동일합니다. 리팩토링 후 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로 이동하십시오.

  • 리팩터링 범위를 선택하고 화면의 단계에 따라 작업을 완료합니다.

리팩토링 복사

이 섹션에서는 한 클래스를 다른 클래스로 복사하는 방법을 이해합니다. Employee 클래스를 Person 클래스에 복사하겠습니다. 기존 모듈이나 새 모듈에 복사 할 수 있습니다. IntelliJ는 이에 따라 필요한 변경을 수행합니다. 복사 리팩토링을 수행하려면 다음 단계를 따르십시오.

  • 이동 Refactor → Copy, 대화 상자가 열립니다.

  • 새 이름과 대상 패키지를 입력하십시오.

  • 확인 버튼을 클릭하면 필요한 작업이 수행됩니다.

리팩토링 이동

이동 리팩토링은 복사와 유사하지만 다른 복사본을 만드는 대신 코드를 다른 패키지로 이동하거나 다른 클래스의 내부 클래스로 만듭니다.

이동 리팩토링을 수행하려면 다음 단계를 따르십시오.

  • Refactor → Move로 이동합니다.

  • 새 창이 나타납니다.

  • 선택에 따라 옵션 중 하나를 선택하고 Refactor를 클릭합니다.

안전한 삭제

Safe Delete 동작은 프로젝트의 어느 곳에서도 참조되지 않는 경우에만 개체를 ​​삭제합니다. 이 옵션의 대상은 클래스, 인터페이스, 메소드, 필드 또는 매개 변수 일 수 있습니다.

이것을 실제로 봅시다. 편집기에 다음 코드를 입력하십시오-

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

안전한 삭제 작업을 수행하려면 다음 단계를 따르십시오.

  • 선택 sayHello() 방법.

  • 마우스 오른쪽 버튼으로 클릭하고 Refactor → Safe Delete 선택권.

  • sayHello () 메서드를 사용하면 다음 스크린 샷과 같이 오류가 표시됩니다.

서명 변경

이 작업은 메서드 서명을 수정합니다. 메서드 이름, 매개 변수, 유형, 반환 값 등을 변경할 수 있습니다. 위의 예에서 메서드를 가져 와서 서명을 변경하겠습니다.

서명 변경 작업을 수행하려면 다음 단계를 따르십시오.

  • 방법을 선택하십시오.

  • 마우스 오른쪽 버튼으로 클릭하고 리팩터링 → 서명 변경 작업을 선택하십시오.

  • 위의 작업을 수행 할 수있는 새 창이 나타납니다.

  • 창 하단에 새 서명의 미리보기가 표시됩니다.

유형 마이그레이션

유형 마이그레이션은 기호 유형을 변경합니다. 이 기호는 메소드 매개 변수 또는 클래스 속성 일 수 있습니다. 필요한 조치를 수행하기 전에 다음 방법을 고려하십시오.

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

유형 마이그레이션을 수행하려면 다음 단계를 따르십시오-

  • "문자열"데이터 유형을 선택합니다.

  • 마우스 오른쪽 버튼으로 클릭하고 Refactor → Type migration.

  • 주어진 텍스트 상자에 필요한 데이터 유형을 입력하십시오.

  • 범위를 선택하고 Refactor 버튼을 클릭합니다.