본문 바로가기
개발 도서

Five Lines of Code - 3장. 긴 코드 조각내기

by 성건희 2023. 8. 27.
반응형

리팩터링 패턴은 크게 4단계가 있다.

  • 긴 함수를 조각내기
  • 타입 코드를 처리하기
  • 유사 코드를 통합하기
  • 데이터를 보호하기

그 중 첫번째 패턴인 ‘긴 함수 조각내기’ 에 대해 알아보자.

코드를 조각내는 규칙들

규칙 1 ) 함수의 라인 수는 5 라인으로 제한한다.

함수의 라인 수를 5 라인으로 제한하면 해당 규칙을 지키기 위해 메서드 분리를 하게 되는데,
메서드 분리를 하면서 메서드가 하나의 책임만 가지도록 코드를 개선하는 효과가 있다.
특정 사례에 맞게 줄 수를 변경할 수 있지만, 실제 줄 수는 5줄 정도로 끝나는 경우가 많다.
이렇게 메서드를 분리하면 각 메서드의 이름으로 코드의 의도를 전달할 수 있고 훨씬 이해하기가 빠르고 쉽다.
또한 작은 메서드에 적절하게 이름을 붙이면 큰 함수 이름을 정하는 데도 도움이 된다.


메서드를 분리할 때는 동일한 작업을 하는 데 필요한 줄의 그룹을 먼저 식별하고, 메서드로 분리하자.
이를 메서드 추출이라고 한다.
메서드 추출은 IDE 의 힘을 빌리면 좀 더 쉽게 할 수 있다. (인텔리제이의 경우 : option + cmd + m)


메서드를 추출할 때 인자가 많아지는 경우가 생길 수 있는데, 이게 오히려 안전한 방법이라면 예쁜 코드로 만드는 것 보다 안전한 코드가 되는게 더 낫다.

규칙 2 ) 메서드의 추상화 수준을 동등하게 맞추자

  • 저수준 : 직접 조작하는 경우

    function run() {
    return 1 + 2; // 저수준
    }
  • 고수준 : 다른 함수에 인자로 전달하는 경우

    function run() {
    return sum(1, 2); // 고수준
    }

함수의 내용은 동일한 추상화 수준에 있어야 한다.
추상화 수준이 동등하면 코드를 읽는게 마치 소설책의 문단을 하나씩 읽는 것처럼 코드를 이해하기 쉬워지기 때문이다.

규칙 3 ) 메서드 이름을 잘 짓자

좋은 이름이 가져야 할 규칙

  • 함수의 의도를 설명해야 한다.
  • 함수가 하는 모든 것을 담아야 한다.
  • 도메인에서 일하는 사람이 이해할 수 있어야 한다.

규칙 4 ) if 문을 함수의 시작에만 배치하자

무언가를 확인하는 것은 한 가지 일이다.
따라서 if 문은 메서드로 분리해야 한다.

반응형

댓글