본문 바로가기

프로그램언어/Refactoring

[ Refactoring ] Inline Temp

간단한 수식의 결과값을 가지는 임시 변수가 있고, 그 임시 변수가 다른 리팩토링을 하는데 방해가 된다면 이 임시변수를 참조하는 부분을 모두 원래의 수식으로 바꿔라

 double basePrice = anOrder.basePrice();
     return (basePrice > 1000)
 return (anOrder.basePrice() > 1000)

동기

  • 대부분의 경우 Inline Temp는 Replace Temp with Query의 한 부분으로 사용된다.
  • 진짜 동기는 그쪽에 있다.
  • Inline Temp가 자신의 목적으로 사용되는 유일한 경우
    • 메소드 호출의 결과값이 임시 변수에 대입되는 경우
    • 임시 변수가 Extract Method와 같은 리팩토링에 방해가 된다면
    • 인라인화 하라

절차

  • 임시 변수를 final로 선언한 다음 컴파일 하라
    • 이것은 임시 변수에 값이 단 한번만 대입이 되고 있는지를 확인하기 위한 것이다
  • 임시변수를 참조하고 있는 곳을 모두 찾아 대입문의 우변에 있는 수식으로 바꾼다.
  • 각각의 변경에 대해 컴파일과 테스트를 한다
  • 임시 변수의 선언과 대입문을 제거한다
  • 컴파일과 테스트 한다.