원칙
- 함수는 한가지일만 해야한다.
- 함수의 크기는? → 밥아저씨 피셜 4줄짜리여야한다.
- 그러려면 indentation, whiler, nested, if 등이 없어야한다.
- 그러려면 잘 지어진 서술적인 긴 이름을 갖는 많은/작은 함수들로 유지해야한다. → 주석이 필요없어진다.
The First Rule of Functions
- 더이상 작아질 수 없을 만큼 작아야한다.
- 큰 함수를 보면 클래스로 추출할 생각을 해야함 → Extract Method Object - Refactoring
- 클래스는 일련의 변수들에 동작하는 기능의 집합 → 큰 함수로 파라미터와 기능들의 동작이므로 빼어낼 수 있음
리팩토링하기
- 일단 큰 함수를 클래스로 변경한다.
- 큰 함수에서 여기저기 쓰이는 변수를 클래스의 멤버변수로 변경한다.
- Action → extract filed & constructor에서 초기화 설정
- 필드로 변경하면 메소드 추출시 파라미터 개수를 줄일 수 있다.
- 필드로 변경 시 2개 이상의 변수가 수정되어 메소드 추출이 불가능한 경우를 방지할 수 있다.
- 비슷한 로직의 중복이 있으면..
- 다른 부분은 파라미터화 시켜서 extract variable 처리를 해서 정확하게 중복인 부분으로 만든다.
- 그 후 method로 추출한다.
이렇게 개선하면
- 읽기 쉬워진다.
- 이해하기 쉬워진다.
- 함수가 자신의 의도를 잘 전달한다.
개선의 원인이 뭘까?