[클린 코드 읽고 정리해두고 다시 보기] 의미 있는 이름

inho ha·2024년 9월 12일
0

의도를 분명하게 밝혀라

  • 변수 또는 함수의 존재 이유, 수행 기능, 사용 방법이 드러나야함
  • List<int[]> theList -> gameBoard
  • cell[STATUS_VALUE] == FLAGGED -> cell.isFlagged()

그릇된 정보를 피하라

  • 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용 금지
  • List 타입이 아니라면 accountList 와 같은 식으로 명명 금지
  • 서로 다른 모듈에서 흡사한 이름 사용 금지
  • 유사한 개념은 유사한 표기법 사용

의미 있게 구분하라

  • a1, a2, ..., an 사용 금지
  • Product, ProductObject 와 같이 차이를 파악할 수 없는 변수명 사용 금지

발음하기 쉬운 이름을 사용하라

  • genymdhms -> generationTimestamp

검색하기 쉬운 이름을 사용하라

  • 문자 하나를 사용하는 이름과 상수를 피하라
  • 7 -> MAX_CLASSES_PER_STUDENT

인코딩을 피하라

  • 헝가리식 표기법 금지
  • 변수 이름에 타입을 인코딩 금지 (멤버 변수 접두어 m_)
  • 인터페이스와 구현 클래스 이름은 구현 클래스에 Imp 을 붙이는 것 정도는 허용

자신의 기억력을 자랑하지 마라

  • 문자 하나만 사용하는 변수 이름 금지
  • 루프의 반복 횟수를 세는 i,j,k는 허용

클래스 이름

  • 클래스 이름과 객체 이름은 명사나 명사구 사용
  • Manager, Processor, Data, Info 사용 금지
  • 동사 사용 금지

메서드 이름

  • 메서드 이름은 동사나 동사구 사용
  • 접근자, 변경자, 조건자는 javabean 표준에 따라 앞에 get, set, is를 붙인다.
  • 생성자를 오버로드할 때는 정적 팩토리 메서드 사용(인수를 설명하는 이름 사용)

기발한 이름은 피하라

  • 재미난 이름보다 명료한 이름 선택

한 개념에 한 단어를 사용하라

  • 일관성 있는 어휘 사용
  • 똑같은 메서드를 클래스마다 fetch, retrieve, get으로 제각각 사용 금지
  • 동일한 코드 기반에 controller, manager, driver 처럼 차이가 모호한 이름 섞어서 사용 금지

말장난을 하지 마라

  • add 메서드가 더하기 메서드로 존재하는데, 삽입 메서드 이름을 add로 사용 금지 (insert, apppend 사용)

해법 영역에서 가져온 이름을 사용하라

  • 코드를 읽을 사람은 프로그래머이기 때문에 전산 용어, 알고리즘 이름, 패턴 이름, 수학 용어를 사용 가능
  • 모든 이름을 도메인 영역에서 가져오는 정책 금지

문제 영역에서 가져온 이름을 사용하라

  • 적절한 프로그래머 용어가 없다면 도메인 영역에서 이름을 가져온다.
  • 도메인 영역 개념과 관련이 깊은 코드도 도메인 영역에서 이름을 가져온다.

의미 있는 맥락을 추가하라

  • 스스로 의미가 분명하지 않은 경우 클래스, 함수, 이름 공간에 넣어 맥락을 부여한다. (다 실패하면 접두어 추가)
  • state -> addressState (접두어 추가)
  • state -> address.state (클래스 생성)

불필요한 맥락을 없애라

  • 이름에 불필요한 맥락 추가 금지
  • GSDAccountAddress -> Address
profile
inho ha / ian(swatchon) / iha(42seoul)

0개의 댓글