존재 이유, 수행 기능, 사용 방법을 명시하라.
❌널리 쓰이는 의미가 있는 단어를 다른 의미로 사용
❌관련성이 적은데 서로 흡사한 이름 사용
❌l과 i, O와 0같이 구분하기 어려운 문자 사용
✅유사한 개념은 유사한 표기법 사용
❌a1, a2, ...aN 사용
❌의미를 구분하지 않은 채 불용어(stopwords, 의미가 없는 단어나 조사)를 추가한 변수 생성(ex. Product, ProductInfo, ProductData)
❌비슷한 의미를 나타내는 변수 사용(ex. moneyAmount, money)
프로그래밍은 사회 활동이기 때문에 발음하기 쉬워야 소통이 쉬워진다.
❌숫자, e
✅WORK_DAYS_PER_WEEK, MAX_CLASSES_PER_STUDENT
❌헝가리식 표기법
프로그래밍 언어에서 변수 및 함수의 인자 이름 앞에 데이터 타입을 명시하는 코딩 규칙
기술 발전으로 자동으로 타입 구별 가능
❌멤버 변수 접두어
접두어가 필요 없을 정도로 함수, 클래스는 작아야 함
사람들이 접두어를 잘 읽지 않음
❌인터페이스를 나타내는 변수 이름
과도한 정보
❌a, b, c 사용
✅루프에서 반복 횟수를 세는 변수 i, j, k는 전통적인 방식이므로 사용해도 좋음
✅명사, 명사구
❌Manager, Processor, Data, Info
✅동사, 동사구
get접근자(ex. getName())
set변경자(ex. setName("mike"))
is조건자(ex. isPosted())
생성자를 중복정의(overload)할 때: 정적 팩토리 메서드 사용
❌재미난 이름, 특정 문화에서만 사용하는 농담
✅명령한 이름, 의도가 명확한 이름
controller, manager, driver 중 하나 선택해서 사용
기존 값을 두 개를 더하거나 이어서 새로운 값을 만드는 메서드 -> add
집합에 값을 추가하는 메서드 -> ❌add, ✅insert/append
코드를 읽을 사람도 프로그래머이므로 전산 용어, 알고리즘 이름, 패턴 이름, 수학 용어, 기술 이름 등을 사용해도 좋다.
문제 영역 개념과 관련이 깊은 코드라면 문제 영역에서 이름을 가져온다.
// 코드 구조
-클래스(변수 선언, 최종 출력 함수) -> 변수를 클래스 안에 넣어 맥락을 분명하게 만듦
-함수(조건에 따라 실행시킬 함수)
-함수(실제 실행될 함수)
❌firstName, lastName, street, houseNumber, city, state, zipcode
✅addrFirstName, addrLastName, addrState
일반적으로 짧은 이름이 긴 이름보다 좋지만, 의미가 분명한 경우에 한해서다. Gas Station Deluxe(고급 휘발유 충전소) 애플리케이션을 만드는 경우, 모든 클래스 이름을 GSD로 시작하는 것은 바람직하지 못하다.