[Book]Clean Code 3장

3장 함수


  • 함수를 작게 만들어라!
    • IF/ELSE 문, while문에 들어가는 블록은 한 줄이어야 한다는 의미
  • 한 가지만 해라!
    • 지정된 함수 이름 아래에서 추상화 수준이 하나인 단계만 수행한다면 그 함수는 한 가지 작업만 한다.
  • 함수 당 추상화 수준은 하나로!
    • 코드는 위에서 아래로 이야기처럼 읽혀야 좋다.
  • 함수에서 인자 4개 이상은 피하라.
    • 많이 쓰는 단항 형식
      • 함수에 인수 1개를 넘기는 가장 흔한 이유
        1. 인수에 질문을 던지는 경우
        2. 인수를 뭔가로 변환해 결과를 반환하는 경우
    • 플래그 인수는 함수가 한꺼번에 여러가지를 한다는 말! 추하다!
    • 이항 함수가 나쁘다는건 아니지만, 그만큼 위험이 따른다는 사실을 이해하고 가능하면 단항 함수로 바꾸도록 애써야 한다.
    • 삼항 함수는 신중히 고려하라
    • 인수가 2~3개 필요하다면, 클래스 변수로 선언해보는건 어떨까. 개념을 표현하게 되기 때문이다.
    • 단항 함수는 함수와 인수가 동사/명사 쌍을 이루어야 한다.
    • 함수 이름에 인자를 넣자. 그러면 인수 순서를 기억할 필요가 없어진다.
  • 부수효과를 일으키지 마라! 함수에서 한 가지를 하겠다고 약속하고선 남몰래 다른 짓도 하니까.
  • 일반적으로 출력 인수는 피해야 한다. 함수에서 상태를 변경해야 한다면 함수가 속한 객체 상태를 변경하는 방식을 택한다.
  • 함수는 뭔가를 수행하거나 뭔가에 답하거나 둘 중 하나만 해야 한다. 둘 다 하면 안된다.
  • 명령 함수에서 오류 코드를 반환하는 방식은 명령/조회 분리 규칙을 미묘하게 위반한다. 반면 오류 코드 대신 예외를 사용하면 오류 처리 코드가 원래 코드에서 분리되므로 코드가 깔끔해진다.
  • try/catch 구문을 별도로 뽑아내는 편이 좋다.
  • 오류 처리도 한 가지 작업이다. 오류를 처리하는 함수는 오류만 처리해야 마땅하다.
  • 반복하지 마라!
  • 구조적 프로그래밍
    • 함수는 return문이 하나여야 한다.
    • break 나 continue를 사용해선 안 되며 goto 는 절대로 절대로 안 된다.
    • 구조적 프로그래밍의 목표와 규율은 공감하지만, 함수가 작다면 위 규칙은 별 이익을 제공하지 못한다. 함수가 아주 클 때만 상당한 이익을 제공한다.

카테고리:

업데이트:

댓글남기기