의도를 분명히 밝혀라
- 변수나 함수 그리고 클래스 이름은 다음 질문에 모두 답할 수 있어야 한다.
- 따로 주석이 필요하다면 의도를 분명히 드러내지 못한 것이다.
- 의도가 드러나는 이름을 사용하면 코드 이해와 변경이 쉬워진다.
그릇된 정보를 피하라
- 그릇된 단서는 코드의 의미를 흐린다.
- 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용해도 안 된다.
- 서로 흡사한 이름을 사용하지 않도록 주의한다.
- 유사한 개념은 유사한 표기법을 사용하여 일관성을 확보해야 한다.
의미 있게 구분하라
- 이름이 달라야 한다면 의미도 달라져야 한다.
- 개념을 구분하지 않은 채 이름만 다르게 붙여서는 안 된다.
- 연속된 숫자를 덧붙이거나 불용어를 추가하는 방식은 지양해야 한다.
- 불용어를 추가한 이름은 아무런 정보도 제공하지 못한다.
- 읽는 사람이 차이를 알도록 이름을 지어야 한다.
발음하기 쉬운 이름을 사용하라
- 발음하기 쉬운 이름은 기억하기 쉽고 토론하기도 쉽다.
검색하기 쉬운 이름을 사용하라
- 문자 하나로 이루어진 이름과 상수는 검색하기 어렵다.
- 이름 길이는 범위 크기에 비례해야 한다.
- 변수나 상수를 여러 곳에서 사용한다면 검색하기 쉬운 이름이 바랍직하다.
인코딩을 피하라
- 유형이나 범위 정보까지 인코딩에 넣으면 이름을 해독하기 어려워진다.
- 인코딩한 이름은 발음하기 어려운 경우가 많으며, 오타가 생기기도 쉽다.
- 인터페이스 이름과 구현 클래스 이름 중 하나를 인코딩해야 한다면 구현 클래스 이름을 택하라.
클래스 이름과 메서드 이름
- 클래스 이름과 객체 이름은 명사나 명사구가 적합하다.
- 메서드 이름은 동사나 동사구가 적합하다.
- 접근자, 변경자, 조건자는 자바 빈 표준에 따라 get, set, is를 붙인다.
- 생성자 오버로딩 시에는 정적 팩토리 메서드를 사용하고, 생성자 직접 호출을 제한한다.
- 메서드 이름은 독자적이고 일관적이어야 한다.
- 주석을 뒤져보지 않고도 프로그래머가 올바른 메서드를 선택할 수 있어야 한다.
기발한 이름은 피하라
- 재미난 이름보다 명료한 이름을 선택하라.
- 특정 문화에서만 사용하는 농담은 피하고, 의도를 분명하고 솔직하게 표현하라.
한 개념에 한 단어를 사용하라
- 한 개념에는 한 단어만 사용함으로써 일관성 있는 어휘를 사용해야 한다.
- 한 단어를 두 가지 목적으로 사용하면 안 된다.
해법 영역과 문제 영역 구분하기
- 해법 영역과 문제 영역을 구분하여 각 영역에 알맞은 이름을 사용해야 한다.
- 기술 개념에는 기술 이름이 가장 적합한 선택이다.
* 모든 이름을 문제 영역에서 가져오는 정책은 현명하지 못하다.
- 적절한 프로그래밍 용어가 없다면 문제 영역에서 이름을 가져온다.
의미 있는 맥락을 추가하라
- 클래스, 함수, 네임스페이스 이름을 이용하여 맥락을 부여하라.
불필요한 맥락을 없애라
- 의미가 분명하다면 일반적으로는 짧은 이름이 긴 이름보다 좋다.
- 이름에 불필요한 맥락을 추가하지 않도록 주의한다.