-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #155 from seongtaekkim/feature/effective
item68 @resolve #149
- Loading branch information
Showing
1 changed file
with
74 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
# item68 일반적으로 통용되는 명명 규칙을 따르라. | ||
|
||
|
||
|
||
### 관례적인 자바의 명명규칙 | ||
|
||
- 자바 플랫폼은 명명규칙이 대부분 자바 언어 명세에 기술되어 있다. | ||
- 이 규칙을 어기면 API는 사용이 어렵고 유지보수가 힘들다. | ||
|
||
|
||
|
||
### 패키지 | ||
|
||
- 패키지와 모듈 이름은 각 요소를 점(.)으로 구분해 계층적으로 짓는다. | ||
- 요소들은 모두 소문자 알파벳과 (드물게) 숫자로 이뤄진다. | ||
- 외부에서 사용 될 패키지는 조직의 인터넷 도메인 이름을 역순으로 사용한다. | ||
- edu.cmu, com.google, org.eff | ||
- 각 요소는 일반적으로 8자 이하의 짧은 단어로 한다. | ||
- utilities 보다는 util | ||
- awt처럼 약어를 사용해도 좋다. | ||
- 도메인이 하나의 요소일지라도 기능을 많이 제공하는 경우 계층을 더 나눠도 좋다. 이런 하부의 패키지를 하위 패키지(subpackage)라 부른다. | ||
- java.util.concurrent.atomic | ||
|
||
### 클래스와 인터페이스(열거타입과 애너테이션 포함) | ||
|
||
- 이름은 하나 이상의 단어로 이뤄지며, 대문자로 시작한다. | ||
- 여러 단어의 첫 글자를 딴 약자나 널리 통용되는 줄입말(ex: max, min)등을 제외하고는 단어를 줄여 쓰지 않도록 한다. | ||
|
||
### 메서드 | ||
|
||
- 첫 글자를 소문자로 작성한다. | ||
- 그 외에는 클래스 명명 규칙과 동일하다. | ||
|
||
### 상수 필드 (static final) | ||
|
||
- 모두 대문자로 작성하며 단어 사이는 밑줄(_)로 구분한다. | ||
|
||
### 지역 변수 | ||
|
||
- 지역 변수가 사용되는 범위가 좁기에 유추하기가 쉽기에 약어를 사용해도 좋다. | ||
- 입력 매개변수는 주석에도 작성되는만큼 좀 더 신경써야 한다. | ||
- 타입 매개변수의 이름은 보통 한 문자로 표현한다. | ||
- 임의의 타입: T | ||
- 컬렉션 원소의 타입: E | ||
- 맵의 키와 값: K, V | ||
- 예외: X | ||
- 메서드의 반환 타입: R | ||
- 그외의 임의 타입: T, U, V | ||
|
||
|
||
|
||
### 작명법 | ||
|
||
- 패키지에 대한 규칙은 따로 없다. | ||
- 객체를 생성할 수 있는 클래스(열거 타입 포함)의 이름은 단수 명사나 명사구를 사용한다. | ||
- Thread, PriorityQueue, ChessPiece, ... | ||
- 객체 생성이 불가한 클래스의 이름은 보통 복수형 명사로 짓는다. | ||
- Collectors, Collections, Arrays, ... | ||
- 인터페이스는 클래스와 똑같이 짓거나 able, ible로 끝나는 형용사로 짓는다. | ||
- Runnable, Iterable, Accessible, ... | ||
- 애너테이션은 지배적인 규칙없이 모두 두루 사용된다. | ||
- BindingAnnotation, Inject, ImplementedBy, Singleton, ... | ||
- 메서드는 동작을 수행하는 동사나 (목적어를 포함한) 동사구로 짓는다. | ||
- append, drawImage, ... | ||
- 반환타입이 논리 값(bool)인 메서드라면 보통 is나 has를 접두사로 붙히고 명사나 명사구, 혹은 형용사로 기능하는 아무 단어나 구로 끝나도록 짓는다. | ||
- isDigit, isProbablePrime, isEmpty, isEnabled, hasSiblings, ... | ||
- 반환 타입이 논리값이 아니거나 해당 인스턴스의 속성을 반환하는 메서드는 보통 명사, 명사구, 혹은 get으로 시작하는 동사구로 짓는다. | ||
- size, hashCode, getTime, ... | ||
- 객체의 타입을 바꿔 다른 타입의 객체를 반환하는 메서드의 이름은 보통 toType 형태로 짓는다. | ||
- toArray, toString, ... | ||
- 객체의 내용을 다른 뷰로 보여주는 메서드는 asType 형태로 짓는다. | ||
- asList | ||
- 객체의 값을 기본 타입 값으로 반환하는 메서드의 이름은 보통 typeValue 형태로 짓는다. | ||
- intValue |