728x90
반응형
자바개발자라면 한번씩 필수로 알아두어야 하는 부분이다. (Naming Rule, Naming Convention 이라고도 한다.)
자바의 명명 규칙은 크게 철자 와 문법 두 범주로 나뉜다.
철자 규칙 은 패키지, 클래스, 메서드, 필드 타입 변수의 이름을 다룬다. 이 규칙들은 특별한 이유가 없는 한 반드시 따라야 한다.
철자 규칙
패키지(package)
- 패키지와 모듈이름은 각 요소를 점(.)으로 구분하여 계층적으로 짓는다.
- 요소들은 모두 소문자 알파벳 혹은 (드물게)숫자로 이뤄진다.
- 조직 바깥에서도 사용될 패키지라면 조직의 인터넷 도메인 이름을 역순으로 사용한다. (edu.cmu, com.google)
- 패키지 이름은 나머지 해당 패키지를 설명하는 하나 이상의 요소로 이뤄진다. (일반적으로 8자 이하의 짧은 단어 사용, utilities보다는 util처럼 의미가 통하는 약어 추천, 여러 단어로 구성된 이름이라면 awt처럼 각 단어의 첫 글자만 따도 좋음)
클래스, 인터페이스
- 하나 이상의 단어로 이뤄지며, 각 단어는 대문자로 시작한다.(List, FutherTask 등)
- 여러 단어의 첫 글자만 딴 약자나 max, min처럼 널리 통용되는 줄임말을 제외하고는 단어를 줄여 쓰지 않도록한다.
메서드, 필드이름
- 첫 글자를 소문자로 쓴다. 그 외 나머지는 클래스 명명규칙과 같다.
상수
필드는 예외이며, 상수 필드를 구성하는 단어는 모두 대문자로 쓰며 단어 사이는 밑줄로 구분한다.(VALUES, NEGATIVE_INFINITY 등)
지역변수
- 다른 멤버와 비슷한 명명규칙이 적용되며, 약어를 써도 좋다. (약어를 써도 그 변수가 사용되는 문맥에서 의미를 쉽게 유추할 수 있기 때문)
타입 매개변수
- 타입 매개변수 이름은 보통 한 문자로 표현한다.
- 임의의 타입엔 T, 컬렉션 원소의 타입은 E, 맵의 키와 값에는 K, V, 예외에는 X, 메서드 반환 타입에는 R
문법 규칙
패키지(package)에 대한 규칙은 따로 없다.
클래스, 인터페이스
- 객체를 생성할 수 있는 클래스의 이름은 보통 단수 명사나 명사구를 사용한다.(Thread, PriorityQueue, ChessPiece 등)
- 객체를 생성할 수 없는 클래스의 이름은 보통 복수형 명사로 짓는다.(Collectors, Collections 등)
- 인터페이스 이름은 클래스와 똑같이 짓거나(Collection, Comparator), able 혹은 ible로 끝나는 형용사로 짓는다.(Runnable, Iterable, Accessible)
메서드
- 동사나 동사구로 짓는다.(append, drawImage)
- boolean값을 반환하는 메서드라면 보통 is나 has로 시작하고 명사나 명사구, 혹은 형용사로 기능하는 아무 단어나 구로 끝나도록 짓는다. (isDigit, isProbablePrime, isEmpty, isEnabled ..)
- 반환 타입이 boolean이 아니거나 해당 인스턴스의 속성을 반환하는 메서드의 이름은 보통 명사, 명사구, 혹은 get으로 시작하는 동사구로 짓는다.(size, hashCode, getTime)
- 객체의 타입을 바꿔서, 다른 타입의 또 다른 객체를 반환하는 인스턴스 메서드의 이름은 보통 toType 형태로 짓는다.(toString, toArray)
- 객체의 값을 기본 타입 값으로 반환하는 메서드의 이름은 보통 typeValue 형태로 짓는다.(intValue)
- 정적 팩터리의 이름은 다양하지만 from, of, valueOf, instance, getInstance, newInstance, getType, newType을 흔히 사용한다.
728x90
반응형
'프로그래밍 노트 > Effective 시리즈' 카테고리의 다른 글
옵셔널(Optional)을 반환하는 메서드 설계 (0) | 2020.01.15 |
---|---|
메서드 시그니처를 신중히 설계하자 (API 설계 요령) (0) | 2020.01.12 |
매개변수가 유효한지 검사하자 (0) | 2020.01.09 |
null이 아닌, 빈 컬렉션이나 배열을 반환해야 한다. (2) | 2020.01.07 |
스트림은 주의해서 사용해야한다. (0) | 2020.01.06 |