본문 바로가기
책 공부

읽기 좋은 코드가 좋은 코드다 (1)

by ppirae 2022. 10. 20.

  • 1장. 코드는 이해하기 쉬워야 한다
    • 가독성의 기본 정리
      • 코드는 다른 사람이 그것을 이해하는 데 들이는 시간을 최소화하는 방식으로 작성되어야 한다.
    • 분량이 적으면 항상 더 좋은가 ?
      • 아니다. 적은 분량은 좋은 목표이긴 하지만, 이해를 위한 시간을 최소화하는 게 더 좋은 목표다.
    • 우리는 다른 사람이 내 코드를 읽고 이해하기 쉬운지 상상해본적 없기 때문에 추가적인 시간과 노력이 든다. 하지만 꼭 필요하다

  • 2장. 이름에 정보 담기
    • 특정한 단어 고르기
      • get(x) → FetchPage(o), Size(x) → Height(o) 등
      • 재치 있는 이름보다 명확하고 간결한 이름이 더 좋다.
    • 보편적인 이름 피하기
      • tmp, retval, foo (x)
      • 이렇게 무의미한 이름이 아니라, 개체의 값이나 목적을 정확하게 설명하는 이름을 골라야 한다.
    • 추상적인 이름 대신 구체적인 이름 사용하기
      • ServerCanStart(x) → CanListenOnPort(o)
    • 접두사 혹은 접미사로 이름에 추가적인 정보 덧붙이기
      • 단위를 포함하는 값들 delay(x) → delay_secs(o)
      • 다른 중요한 속성 포함하기 password(x) → plaintext_password(o)
    • 이름이 얼마나 길어져도 좋은지 결정하기
      • 좁은 범위에서는 짦은 이름이 괜찮다.
      • 긴 이름은 더이상 문제가 되지 않는다.
      • 약어와 축약형은 새로운 사람이 의미하는 바를 이해할때만 string 대신 str
      • 불필요한 단어 제거하기 convertToString → ToString
      • 이름 포맷팅으로 의미를 전달하라
    • 추가적인 정보를 담을 수 있게 이름 구성하기

  • 3장. 오해할 수 없는 이름들
    • 본인이 지은 이름을 “다른 사람들이 다른 의미로 해석할 수 있을까 ?” 라는 질문을 던져보며 철저하게 확인해야 한다.
    • Filter(), Clip()등의 단어는 여러 의미로 해석될 수 있다.
    • 경계를 포함하는 한계값 min, max
    • 경계를 포함하는 범위 first, last
    • 경계를 포함하고/배제하는 범위 begin, end
    • 불리언 변수에 이름 붙이기 read_password (x), use_ssl (o)
    • 사용자의 기대에 부응하기 - 시간이 제법 걸리는 연산이라는 사실을 명확하게 드러내는게 좋다.
    • 언제나 의미가 오해되지 않는 이름이 최선의 이름이다.

 

댓글