Refactoring/Refactoring Skill

[Refactoring 기법 #03] 메서드 정리 - 임시변수 내용 직접 삽입

JeongKyun 2022. 1. 9.
반응형
※ 오늘의 명언 

훌륭한 코드는 훌륭한 문서보다 낫다.

- Steve McConnell, 개발자

 

서론

이번에 공부할 내용은 메서드 정리 파트에서 임시변수 내용 직접 삽입이다.

바로 시작해보자.

 


 

작성소스

private bool compareSumValue()
{
	int temp_val = Calculator.Sum(1,2);
    
	return (temp_val > 2)
}

위의 소스에서 temp_val은 Sum()이라는 함수에서 나온 결과물을 담아놓는 임시 변수이다. 리팩토링 책에서는 이렇게 제안한다.

 

"간단한 수식을 대입받는 임시변수로 인해 다른 리팩토링 기법 적용이 힘들 땐 그 임시변수를 참조하는 부분을 전부 수식으로 치환하자"

 

위의 내용을 참고하여 리팩토링을 진행해보자.

 

 

 

리펙토링 후 소스

private bool compareSumValue()
{  
	return (Calculator.Sum(1,2) > 2)
}

 

임시변수의 값을 삭제하고 해당 값을 바로 return값에 적용을 시켰다.

 

메서드의 내용이 결과값만 바로 도출되는 리턴 함수라면 굳이 임시변수에 넣지 않고 비교값에 직접 넣어 사용하면 소스를 많이 줄일 수 있는 좋은 기법 중 하나이다.

 


 

임시변수 내용 직접 삽입 리팩토링 방법

위의 래팩토링 방법을 기술하면 이렇다.

 

  • 대입할 임시변수의 우변에 문제가 없는지 확인하자.
  • 문제가 없다면 임시변수를 final로 선언하고 컴파일 해보자.
  • (why? 새로운 정의를 막고 임시변수에 값을 한번만 대입해서 테스트 해보기 위함)
  • 그 임시변수를 참조하는 모든 부분을 찾아서 우변의 수식으로 변경한다.
  • 하나씩 수정을 마칠 때 마다 컴파일과 테스트를 꼭 진행해보자.
  • 임시변수 선언을 삭제하자.
  • 전체 컴파일을 진행하여 테스트를 실시 후 마무리.

 

다시 정리하면 위의 방법을 사용할 때는 메서드 호출의 결과값이 임시변수에 대입될때만 사용하는 것이 좋으며 보통 위의 리팩토링은 다음 챕터에서 다뤄볼 임시변수를 메서드 호출로 전환하는 부분에서 많이 병용되어 많이 사용된다.

 

임시변수를 메서드 호출로 전환은 무엇인지 다음 챕터에서 확인해보자.

댓글

💲 많이 본 글