추출 및 인라인 리팩터링

베루스·2022년 5월 19일
0
post-custom-banner

많은 분들이 각자만의 리팩터링 방법을 가지고 있을 것 같습니다. 이 글을 통해서 저만의 리팩터링 방법을 소개하고, IntelliJ의 다양한 리팩터링 기능을 살펴보려 합니다 ㅎㅎ

우선 IntelliJ가 지원하는 리팩터링 단축키를 살펴보려 합니다. 맥을 기준으로 작성했고, 윈도우는... 잘 모르겠습니다 ㅠㅠ 그래도 IntelliJ에 Refactor 탭에 단축키가 적혀있어서 참고하시면 될 것 같아요~😁

기본적으로 현재 커서 위치에서 가능한 리팩터링 리스트를 보기 위해서는 Control(⌃) + T를 누르면 됩니다.

아래의 그림과 같이 다양한 기능들을 IntelliJ에서 제공해주는데 자주 사용하는 리팩터링 기능은 따로 단축키를 외워두면 편합니다 ㅎㅎ (상황에 따라 단축키가 설정되어 있지 않는 리팩터링 기능도 있어요... ex) Pull Members Up)

추출 리팩터링

변수 추출

변수 관련 리팩터링은 이미 많이 사용하고 있어서 다들 아시는 내용이 많으실 것 같은데, 한번 몇 가지 정리해보도록 하겠습니다. 단축키를 외우는 팁은 변수(Variable), 상수(Constant), 필드(Field), 파라미터(Parameter)의 앞의 글자를 따오면 쉽게 외울 수 있습니다 ㅎㅎ

지역 변수 추출

지역 변수 추출은 Command(⌘) + Option(⌥) + V로 사용할 수 있습니다. 원하는 곳에 커서를 위치한 다음 단축키를 사용하면 됩니다.

  1. 원하는 곳에 커서 위치(new StationRequest(stationName))
  2. 단축키 사용(Command(⌘) + Option(⌥) + V) 및 중복된 값 적용 여부 설정
  3. 추출!

    원할경우 final이나 var 타입도 적용할 수 있어요 ㅎㅎㅎ

필드 추출

필드 추출은 Command(⌘) + Option(⌥) + F로 사용할 수 있습니다.

  1. 원하는 곳에 커서 위치(new StationRequest(stationName))

  2. 단축키 사용(Command(⌘) + Option(⌥) + F)

    필드로 추출할 때 초기화하는 곳을 정할 수 있습니다. 테스트인 경우 setUp으로도 설정 가능합니다.

  3. 추출!

상수 추출

상수 추출은 Command(⌘) + Option(⌥) + C로 사용할 수 있습니다.

  1. 원하는 곳에 커서 위치

  2. 단축키 사용(Command(⌘) + Option(⌥) + C)

    여기서 중복된 부분에 모두 적용을 하거나 상수를 다른 클래스에 정의할 수도 있습니다.
    Move to another class를 체크할 경우 아래의 창이 나오는데 적절히 설정해서 상수를 추출할 수 있습니다.

  3. 추출!


    이렇게 다른 클래스로도 상수를 추출할 수 있습니다 ㅎㅎ

파라미터 추출

파라미터 추출은 Command(⌘) + Option(⌥) + P로 사용할 수 있습니다.

  1. 원하는 곳에 커서 위치

  2. 단축키 사용(Command(⌘) + Option(⌥) + P)

    파라미터를 추출할 때 2가지를 선택할 수 있습니다.
    1. 현재 사용되고 있는 곳에서 초기화 코드를 넣기
    2. 위임 메서드를 추가로 만들기 (Delegate via overloading method를 체크)

  3. 추출!

    • 현재 사용되고 있는 곳에서 초기화 코드 넣기

      위와 같이 기존에 createGraph를 호출하고 있던 곳에 초기화 로직이 인라인되어 있습니다.
    • 위임 메서드를 추가로 만들기 (Delegate via overloading method를 체크)

      기존 시그니처를 가진 메서드에서 파라미터가 추가된 새로운 메서드를 호출하도록 만들 수 있습니다. 기존 시그니처를 가진 메서드가 필요한 경우 사용할 수 있는 추출인 것 같습니다 ㅎㅎ

메서드 추출

메서드 추출(Command(⌘) + Option(⌥) + M)은 모두가 알고 있는 리팩터링이라 생략하겠습니다. 주의할 점은 추출할 로직의 변수 반환이 여러개인 경우에 사용할 수 없다는 것만 알아두시면 좋을 것 같습니다.


위의 2줄의 코드는 path, fare 2개의 변수를 반환해야하므로 메서드 추출이 불가능합니다...

인라인 리팩터링

인라인은 변수, 메서드 모두 적용가능합니다. 단축키는 Command(⌘) + Option(⌥) + N입니다.

변수 인라인

  1. 원하는 변수에 커서 위치

  2. 단축키 입력(Command(⌘) + Option(⌥) + N)

메서드 인라인

  1. 원하는 메서드에 커서 위치

  2. 단축키 입력(Command(⌘) + Option(⌥) + N)

    인라인할 메서드를 제거하거나 유지할 수 있도록 선택할 수 있습니다

  3. 인라인!

정적 팩터리 메서드는 제거되고 생상자를 사용하도록 메서드가 인라인 됐습니다 ㅎㅎ

post-custom-banner

0개의 댓글