읽기 좋은 코드가 좋은 코드다(더스팀 보즈웰, 트레버 파우커 지음, 임백준 옮김) 를 읽고 

자주 참고하면서 습관화하려는 부분을 정리해 놓은 것으로 좀 더 자세한 내용은 책을 보기 바랍니다.


■ 이름에 정보를 담아라

  • 특정한 단어 고르기
    • 무의미한 단어를 피하고 구체적인 단어 선택로 명확하고 간결한 이름이 좋다.
    • 예) GetPage() -> FetchPage(), DownloadPage()
  • 보편적인 이름 피하기
    • retval라는 이름보다 변수값을 설명하는 이름을 사용한다.
    • tmp는 짧게 임시적으로만 존재하고, 임시적 존제 자체가 변수의 가장 중요한 용도일때에 한해서 사용한다. 
    • 루프반복자로 i, j 보다는 구체적으로 members_i, users_i 혹은 간결하게 mi, ui로 사용한다.
    • tmp, it, retval 같은 보편적인 이름을 사용하려면, 꼭 그렇게 해야 하는 이유가 있어야 한다.
  • 추상적인 이름 대신 구체적인 이름 사용하기
  • 접두사 혹은 접미사로 이름에 추가적인 정보 덧붙이기
    • 예) string id; // Example: "af84ef845cd8" -> string hex_id;
    • 단위값을 포함하는 값. size_mb, max_kbps
    • 헝가리언 표기법 : pLast와 같이 추가적인 속성을 이름 앞에 붙여 넣는 것.
    • 잉글리쉬 표기법 : 변수가 가지는 중요한 속성을 포착한 다음, 그 속성에 중요한 의미가 있으면 변수명에 포함.
  • 이름이 얼마나 길어져도 좋은지 결정하기
    • 좁은 범위에서 잠깐 사용되는 변수명은 짧을수록 더 좋다.
    • 단어 완성 기능 이용하기 (이클립스 Alt + / , Vim Ctrl + P)
  • 추가적인 정보를 담을 수 있게 이름 구성하기
    • 밑줄와 대시 그리고 대문자를 잘 이용하라.
    • 예) 클래스변수를 로컬변수와 구분하기 위해 '_'를 붙일 수 있다.
    • 예) html태그에 id는 밑줄로 단어를 구분하고 class는 대시로 구분한다.
      • <div id="middle_colum" class="main-content">


■ 오해하지 않도록 정하기

  • 어떤 값의 상한과 하한을 정할 땐 max_와 min_을 이름 앞에 붙이면 좋은 접두사 역할을 한다.
    • x < max_val
  • 경계를 포함한다면 first와 last가 좋은 이름이다.
    • x <= last_val
  • 경계의 시작만 포함하고 마지막은 배제하는 범위라면, begin과 end가 가장 널리 사용되는 이름이므로 최선이다.
    • begin <= x <end
  • 불리언값 이름을 정할 때는 불리언이라는 사실을 명확이 드러내기 위해서 is나 has와 같은 단어를 사용한다.
  • 사람들이 특정한 단어를 일반적으로 생각하는 사실에 유의할 필요도 있다.
    • get() 혹은 size()와 같은 함수가 가벼운 메소드라고 기대할지도 모른다.
    • 최근에 C++ 표준 라이브러리에서 "size()는 O(1)이어야 한다."는 규칙을 정했다.


+ Recent posts