프로그램 아키텍쳐/Refactoring

메소드 추출(Extract Method)와 메소드 이름 변경(Rename Method)

본클라쓰 2010. 12. 9. 13:14

 

메소드 추출(Extract Method)

 

클래스안에 메소드가 너무 길 경우, 메소드 안에 자잘한 처리가 연속되어 있는 경우, 그 처리 내부에서 그룹을 찾아내고 그 그룹을 독립적인 메소드로 추출한다. 그런 다음 추출한 메소드에 적절한 이름을 붙인다. 이것이 메소드 추출이다.

 

길고 지저분하게 늘어선 코드가 메소드 추출을 통해 읽기 쉽게 바뀐다. 메소드 추출 리팩토링을 하면 각각의 메소드는 짧아 지지만 메소드 수는 증가한다.

 

메소드 추출로 해당 메소드가 ‘무엇을 하는가’를 알기 쉽게 이름을 붙인 후 기존의 메소드의 코드를 새로운 메소드로 복사한다. 그리고 메소드 안의 지역변수를 검토하여 메소드의 리턴값을 검토한다. 그 후 기존의 메소드는 새로운 메소드를 호출하는 방식으로 코드를 변경한다.

 

 

 

 

메소드 이름 변경(Rename Method)

 

메소드 이름을 작성할 때는 ‘무엇을 하는지(what to do)' 알기 쉽게 이름을 붙이는 것이 중요하다. ’어떻게 구현하는가(How to do)'라는 이름을 붙여서는 안 된다. 이름은 매우 중요하다. 적절한 이름이 생각나지 않는다는 것은 그 코드로 무엇을 할 것인지 파악할 수 없다는 증거이다. 적절한 메소드의 이름을 생각하는 것은 중요하면서도 매우 어려운 기술이다.

 

메소드의 이름을 변경하는 것도 하나의 리팩토링이다. 만약에 메소드가 이해하기 어려운 이름으로 되어 있다면 알기 쉽게 이름을 변경한다. 메소드가 부적절한 이름으로 되어 있다면 적절한 것으로 변경하는 리팩토링인 것이다.