'리팩토링 냄새 긴 메서드'에 해당되는 글 1건

  1. 2008.09.22 [rwb] 측정할 수 있는 냄새, 긴 메서드
1. 징후
많은 줄   (저자는 5~10줄을 넘어가면 우선 의심한단다)

2. 원인
프로그래머는 메서드를 작성하기 시작한 후, 적절한 시점에 흐름을 끊거나 헬퍼 클래스를 도입하기 보다는,
하나씩 더 추가하게 된다
.
코딩을 하다 보면 작성하던 코드를 다시 한번 읽는 것보다 계속 작성해 나가는 것이 더 쉽기 때문에
지나치게 큰 블록을 작성
하고 싶은 유혹이 항상 존재.

3. 해야 할 일
ㄱ) Extract Method를 이용해 메서드를 좀더 작은 부분으로 쪼갠다.
흥미로운 블럭을 설명하는 공백이나 주석을 찾아보자. 이때 기계적으로 일곱줄에 한 번씩 함수를 호출하지말고,
의미론적으로 중요한 메서드들을 뽑아내야 한다.

ㄴ)메서드 나누기를 시작하기도 전에 유용한 다른 리팩터링 (일직석으로 길게 나열된 코드 줄, 조건문, 변수 사용법 등을 정리해주는 리팩터링)을 발견할 수도 있다.

4. 효과
의사 소통 증진, 중복을 노출, 흔히 새로운 클래스와 추상화가 느러다도록 한다.

5. 논의
ㄱ) 메서드 호출 빈도가 높아지면 성능이 떨어지는 것이 아니냔 걱정 -> 이는 대부분 사소한 문제로, 이전의 코드를 가능한 깨끗하게 만들면 성능을 획기적으로 증대시키도록 시스템이나 알고리즘을 재구성할수 있는 통찰력을 얻게됨

ㄴ) 매트릭을 눈 감고 적용하지 말자. Extract Method를 사용하는 목적은 그것을 사용하여 통찰력을 증대시키기 위함이다.

6. 금기
어느 정도 긴 메서드가 무언가를 표현하는 가장 좋은 방법일 때도 있다.
(모든 냄새와 마찬가지로, 길이는 문제가 있을지도 모른다는 경고 신호일뿐, 길이가 길다고 반드시 문제가 있는 것은 아님)
신고
Posted by 영겁회귀

티스토리 툴바