많은 분들이 각자만의 리팩터링 방법을 가지고 있을 것 같습니다. 이 글을 통해서 저만의 리팩터링 방법을 소개하고, IntelliJ의 다양한 리팩터링 기능을 살펴보려 합니다 ㅎㅎ
우선 IntelliJ가 지원하는 리팩터링 단축키를 살펴보려 합니다. 맥을 기준으로 작성했고, 윈도우는... 잘 모르겠습니다 ㅠㅠ 그래도 IntelliJ에 Refactor 탭에 단축키가 적혀있어서 참고하시면 될 것 같아요~😁
기본적으로 현재 커서 위치에서 가능한 리팩터링 리스트를 보기 위해서는 Control(⌃) + T
를 누르면 됩니다.
아래의 그림과 같이 다양한 기능들을 IntelliJ에서 제공해주는데 자주 사용하는 리팩터링 기능은 따로 단축키를 외워두면 편합니다 ㅎㅎ (상황에 따라 단축키가 설정되어 있지 않는 리팩터링 기능도 있어요... ex) Pull Members Up
)
변수 관련 리팩터링은 이미 많이 사용하고 있어서 다들 아시는 내용이 많으실 것 같은데, 한번 몇 가지 정리해보도록 하겠습니다. 단축키를 외우는 팁은 변수(Variable), 상수(Constant), 필드(Field), 파라미터(Parameter)의 앞의 글자를 따오면 쉽게 외울 수 있습니다 ㅎㅎ
지역 변수 추출은 Command(⌘) + Option(⌥) + V
로 사용할 수 있습니다. 원하는 곳에 커서를 위치한 다음 단축키를 사용하면 됩니다.
new StationRequest(stationName)
)Command(⌘) + Option(⌥) + V
) 및 중복된 값 적용 여부 설정필드 추출은 Command(⌘) + Option(⌥) + F
로 사용할 수 있습니다.
원하는 곳에 커서 위치(new StationRequest(stationName)
)
단축키 사용(Command(⌘) + Option(⌥) + F
)
필드로 추출할 때 초기화하는 곳을 정할 수 있습니다. 테스트인 경우 setUp으로도 설정 가능합니다.
추출!
상수 추출은 Command(⌘) + Option(⌥) + C
로 사용할 수 있습니다.
원하는 곳에 커서 위치
단축키 사용(Command(⌘) + Option(⌥) + C
)
여기서 중복된 부분에 모두 적용을 하거나 상수를 다른 클래스에 정의할 수도 있습니다.
Move to another class
를 체크할 경우 아래의 창이 나오는데 적절히 설정해서 상수를 추출할 수 있습니다.
추출!
이렇게 다른 클래스로도 상수를 추출할 수 있습니다 ㅎㅎ
파라미터 추출은 Command(⌘) + Option(⌥) + P
로 사용할 수 있습니다.
원하는 곳에 커서 위치
단축키 사용(Command(⌘) + Option(⌥) + P
)
파라미터를 추출할 때 2가지를 선택할 수 있습니다.
1. 현재 사용되고 있는 곳에서 초기화 코드를 넣기
2. 위임 메서드를 추가로 만들기 (Delegate via overloading method
를 체크)
추출!
Delegate via overloading method
를 체크)메서드 추출(Command(⌘) + Option(⌥) + M
)은 모두가 알고 있는 리팩터링이라 생략하겠습니다. 주의할 점은 추출할 로직의 변수 반환이 여러개인 경우에 사용할 수 없다는 것만 알아두시면 좋을 것 같습니다.
위의 2줄의 코드는 path, fare 2개의 변수를 반환해야하므로 메서드 추출이 불가능합니다...
인라인은 변수, 메서드 모두 적용가능합니다. 단축키는 Command(⌘) + Option(⌥) + N
입니다.
원하는 변수에 커서 위치
단축키 입력(Command(⌘) + Option(⌥) + N
)
원하는 메서드에 커서 위치
단축키 입력(Command(⌘) + Option(⌥) + N
)
인라인할 메서드를 제거하거나 유지할 수 있도록 선택할 수 있습니다
인라인!
정적 팩터리 메서드는 제거되고 생상자를 사용하도록 메서드가 인라인 됐습니다 ㅎㅎ