의도를 분명히 밝혀라
- 변수나 함수, 클래스 이름은 다음과 같은 질문에 모두 답해야한다.
- 변수, 함수, 클래스의 존재 이유
- 수행 기능
- 사용 방법
ex)
int d; // X
int fileAgeInDays; // O
int elapsedTimeInDays; // O
int daysSinceCreation; // O
int daysSinceModification; // O
- 의도가 드러나는 이름을 사용하면 코드 이해와 변경이 쉬워짐.
- 매직넘버를 지양하고 상수에도 의미있는 이름을 붙이며, 코드를 명확히 관리할 것.
그릇된 정보를 피하라
- 여러 계정을 그룹으로 묶을 때, 실제
List
가 아니라면 accountList라 명명하지 않는다.
- List인 경우라도 타입을 이름에 넣지 않는 편이 바람직함.
- MutableList, ArrayList인지 어떤 타입인지 알 수 없음.
- 추후에 타입이 바뀌게 되면 이름이 적절하지 않음.
- ex)
val accountList: Set<Account> = setOf(...)
- accountGroup, Accounts라 명명한다.
- 서로 흡사한 이름을 사용하지 않도록 주의한다.
- 유사한 개념은 유사한 표기법을 사용함. 일관성이 떨어지는 표기법은 그릇된 정보임.
의미 있게 구분하라
- 변수명에 숫자와 비슷한 소문자 L, 대문자 O는 포함하지 않는다.
- 불용어를 지향하자. 불용어를 추가한 이름 역시 아무런 정보도 제공하지 못함.
- a, an, the, Info, Data
- ex) ProductData, ProductInfo
검색하기 쉬운 이름을 사용하라
- 변수나 상수를 코드 여러 곳에서 사용한다면 검색하기 쉬운 이름이 바람직함.
ex)
const int WORK_DAYS_PER_WEEK = 5;
- 5로 검색한다면 5가 들어가는 모든 곳이 검색되지만, 이름을 의미있게 지으면 WORK_DAYS_PER_WEEK를 찾기가 매우 쉬움.
클래스 이름
- 클래스 이름과 객체 이름은 명사나 명사구가 적합함.
- ex) Customer, WikiPage, Account, AccountParser 등