본문 바로가기
리팩토링

[리팩토링] 메소드 추출

by NYO_O 2023. 11. 6.
반응형

메소드 추출(Extract Method) 리팩토링

코드 중복을 줄이고 가독성을 향상시킬 수 있다.

긴 메소드를 여러 개의 작은 메소드로 분리하고 각 메서드가 특정한 한 작업을 수행하도록 만드는 것이다.

 

 

메소드 추출이 필요한 상황은?

메소드 하나가 너무 길고, 한 가지 동작만 하지 않을 때

 

 

해법은?

기존 메소드에서 묶을 수 있는 코드를 추출하고 새로운 메소드를 만든다.

 

 

결과는?

메소드가 짧아진다.

메소드의 개수가 늘어난다.

 

 

방법은?

1. private의 새로운 메서드를 생성하고 적절한 이름을 붙인다.

     - 메소드가 무엇을 하는지 잘 알 수 있는 이름으로 만든다.

     - 메소드에서 어떻게 처리하는지를 뜻하는 이름은 붙이지 않는다.

     - 적당한 이름을 붙일 수 없다면 추출하지 않아야 할 메소드일 수 있다.

2. 기존 메소드에서 새로운 메소드로 코드를 복사한다.

3. 메소드 내부의 지역 변수를 검토한다.

     - 복사한 코드 안에서만 사용하는 변수라면 메소드의 지역 변수로 만든다.

4. 메소드 매개변수를 검토한다.

     - 복사한 코드에서 변경되는 변수가 있는지 확인한다.

     - 변경된 변수가 여러 개 있다면 리팩토링을 멈추고, 변경한 값들을 되돌린다.

     - 변경된 변수가 한 개라면 "메소드 반환 값"으로 쓰기에 적당한지 검토한다.

           - 적당하다면 메소드 반환값으로 사용한다.

           - 적당하지 않다면 리팩토링을 멈추고, 변경한 값들을 되돌린다.

5. 기존 메소드에서 앞서 코드를 복사한 부분을 새로운 메소드 호출로 치환한다.

6. 기존 메소드에서 더는 사용하지 않는 지역 변수가 있다면 삭제한다.

 

 

 

 

 

메소드 이름 정하기

1. 메소드 이름은 "동사 + 명사" 순서로 짓자.

2. 메소드 이름은 "무엇을 하는가"를 알 수 있게 짓는 것이 중요하다.

     - 구현 방법이 변경될 수 있기 때문에 "어떻게 하는가"는 이름으로 적당하지 않다.

 

 

 

반응형

 

반응형