CHAPTER 5 가독성 높은 코드를 작성하라

좋은코드 나쁜코드: 프로그래머의 코드 품질 개선법(PART II 실전)

CHAPTER 5 가독성 높은 코드를 작성하라

가독성은 주관적인것

서술형 명칭 사용

  • 서술적이지 않은 이름은 코드를 읽기 어렵게 만든다
  • 주석문으로 서술적인 이름을 대체할수 없다
    • 주석도 유지보수 해야된다

주석문의 적절한 사용

주석문의 목적

  • 코드가 무엇을 하는지 설명
  • 코드가 왜 그 일을 하는지 설명
  • 사용 지침 등 기타 정보 제공

코드 기능을 설명하기 위해 주석문을 많이 추가해야 되면 가독성이 떨어진다는 신호

  • 중복된 주석문은 유해할 수 있다
    • 주석도 유지보수 해야 된다
    • 코드를 지저분하게 만든다
  • 주석문으로 가독성 높은 코드를 대체할 수 없다
  • 주석문은 코드의 이유를 설명하는데 유용하다
  • 주석문은 유용한 상위 수준의 요약 정보를 제공할 수 있다
    • 책 읽을때 줄거리

코드 줄 수를 고정하지 말라

  • 간결하지만 이해하기 어려운 코드는 피해라
    • 많은줄이 필요하더라고 가독성 높은 코드를 작성하라

일관된 코딩 스타일을 고수하라

  • 일관적이지 않은 코딩 스타일은 혼동을 일으킬 수 있다
    • 스타일 가이드를 채택하고 따르라

깊이 중첩된 코드를 피하라

일반적인 코드가 갖는 중첩되는 블록

  • 함수가 호출되면 그 함수가 실행되는 코드가 하나의 블록이 된다

  • if문의 조건이 참일 때 실행되는 코드는 하나의 블록이 된다

  • for루프의 각 반복시 실행되는 코드는 하나의 블록이 된다

  • 깊이 중첩된 코드는 읽기 어려울 수 있다

    • 중첩을 최소화하기 위한 구조 변경
  • 중첩은 너무 많은 일을 한 결과물이다

    • 더 작은 함수로 분리

함수 호출도 가독성이 있어야 한다

함수의 이름이 잘 명명되면 그함수가 무슨일을 하는지 분명하지만 인수가 무엇이고 무슨역활을 하지는 명롹하지 않다면 호출이 이해되지 않는다

  • 매개변수는 이해하기 어려울 수 있다
    • 명명된 매개변수 사용
    • 서술적 유형 사용
      • 열거형
      • 클래스
  • 때로는 훌륭한 해결책이 없다
    • 주석?
    • 세터 함수
    • 빌더 패턴
  • IDE는 어떤가?
    • 가독성에는 의존하지 않는것이 좋다
      • 모든 개발자가 사용하는게 아닐수 있다

설명되지 않은 값을 사용하지 말라

하드코드로 작성된 값이 필요한 경우

  • 한 수량을 다른 수량으로 변환 할때 사용하는 계수
  • 작업이 실패할 경우 재시도의 최대 횟수와 같이 조정 가능한 파라미터 값
  • 어떤 값이 채워질 수 있는 템플릿을 나타내는 문자열

하드 코드로 작성된 모든 값에 있는 두가지 중요한 정보

  • 값이 무엇인지

  • 값이 무엇을 의미 하는지

  • 설명되지 않은 값은 혼란스러울 수 있다

    • 잘 명명된 상수를 사용하라
    • 잘 명명된 함수를 사용하라
      • 상수를 반환하는 공급자 함수
      • 변환을 수행하는 헬퍼 함수

익명 함수를 적절하게 사용하라

  • 익명 함수는 간단한 로직에 좋다
    • 재사용 관점에서 명명함수가 유용할때가 있다
  • 익명 함수는 가독성이 떨어질 수 있다
    • 대신 명명 함수를 사용하라
  • 익명 함수가 길면 문제가 될 수 있다
    • 긴 익명 함수를 여러 개의 명명 함수로 나누라

프로그래밍 언어의 새로운 기능을 적절하게 사용하라

  • 새 기능은 코드를 개선할 수 있다
  • 불분명한 기능은 혼동을 일으킬 수 있다
  • 작업에 가장 적합한 도구를 사용하라

참조