의도를 분명히 밝혀라
- 의도가 드러나는 이름을 사용하면 코드 이해와 변경이 쉬워진다.
- 코드가 단순한게 문제가 아니다. 코드를 통해 명확히 어떤 의도로 사용되는 것인지 짐작할 수 있어야 한다.
그릇된 정보를 피해라
- 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용하면 안된다.
- 서로 흡사한 이름을 사용하지 않도록 주의해야 한다.
- 유사한 개념은 유사한 표기법을 사용한다.
- 알파벳 "O", "l" 처럼 숫자와 혼동될 수 있는 변수 명을 주의해서 사용해야 한다.
의미 있게 구분하라
- 불용어를 추가한 이름은 아무런 정보도 제공하지 못한다.
Product
라는 클래스가 있을 때, 다른 클래스를ProductInfo
,ProductData
로 사용한다면 의미가 불분명한 정보라 이해하기 쉽지 않다.- 불용어 : 문장 내에서 빈번하게 발생하여 의미를 부여하기 어려운 단어
a
,an
,the
등
- 다음과 같은 단어는 피하는게 좋다.
variable
,table
,~String
,~Object
- 변수에 불용어가 존재했을 때, 만약 불용어를 제거한 변수와 불용어가 붙어있는 변수를 서로 구분하지 못하겠다면 잘못된 변수명을 사용한 것이다.
발음하기 쉬운 이름을 사용하라
- 발음하기 어려운 이름은, 팀원과 회의나 프로젝트에 대해 대화를 할 때 비효율적일 수 있다.
- 줄임말을 사용하는 것도 같은 이치로 사용을 피하는게 좋다.
검색하기 쉬운 이름을 사용하라
e
,a
와 같은 단어를 이름이나 상수로 사용하면 검색하기 쉽지 않다. 거의 모든 곳에서 사용되고 있기 때문이다.- 긴 이름이 짧은 이름보다 좋다.
- 이름 길이는 범위 크기에 비례해야 한다.
- 변수나 상수를 코드 여러 곳에서 사용한다면 검색하기 쉬운 이름이 바람직하다.
1
,2
와 같은 숫자를 그냥 사용하는 것보다 변수에 할당하고 의미있는 이름을 지정해주는 것이 좋다.
클래스 이름
- 명사나 명사구가 적합하다.
Customer
,Account
- 불용구는 피하는게 좋다.
~~Manager
,~~Data
,~~Info
- 동사는 사용하지 않는다.
메서드 이름
- 동사나 동사구가 적합하다.
save
,deletePage
- 접근자, 수정자, 조건자는
get
,set
,is
를 붙인다. - 생성자를 중복정의할 때는 정적 팩토리 메서드를 사용한다. 이때, 메서드는 인수를 설명하는 이름을 사용한다.
한 개념에 한 단어를 사용하라
- 추상적인 개념 하나에 단어 하나를 선택해서 사용한다.
- 또한, 한 단어를 두 가지 목적으로 사용하지 마라
- 기존에 값을 더하는 메소드에
add
를 사용했다. 근데 리스트에 값을 추가하는 메소드에도add
라는 이름을 사용한다면, 이는 코드를 이해하는데 어려움을 줄 수 있다.
- 기존에 값을 더하는 메소드에
해법 영역에서 가져온 이름을 사용하라
- 코드를 읽는 사람도 프로그래머이기 때문에 전산 용어, 알고리즘 이름, 패턴 이름, 수학 용어 등을 사용해도 괜찮다.
문제 영역에서 가져온 이름을 사용해라
- 적절한 프로그래머 용어가 없다면 문제 영역에서 이름을 가져온다.
- 문제 영역은 개발하려는 서비스 도메인을 의미하는 것 같다.