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 버튼을 클릭합니다.