Effective Java, 일반적으로 통용되는 작명 관습을 따르라 ( naming convention )

작명 규칙을 어기는 API는 사용하기 어렵다. 이 규칙을 어기는 구현은 유지보수하기 어렵다. 어느 쪽이건 간에, 철자에 관계된 작명 규칙을 어기면 그 코드를 이용할 프로그래머는 혼란스러워 할 뿐 아니라 짜증을 낼 것이고, 오류로 이어질 잘못된 가정들을 하게 될 것이다. - effective java

패키지

패키지 이름은 마침표를 구분점으로 사용하는 계층적 이름이어야 한다.

패키지 이름을 구성하는 각각의 컴포넌트는 알파벳 소문자로 구성하고, 숫자는 거의 사용하지 않는다.

여러분의 조직 바깥에서 이용될 패키지 이름은 해당 조직의 인터넷 도메인 이름으로 시작해야 하는데, edu.cmu, com.sun, gov.sna 처럼 최상위 도메인 이름이 먼저 온다.

예외적으로, 표준 라이브러리와 그 옵션 패키지 명은 java와 javax로 시작한다.

사용자는 java나 javax로 시작하는 패키지 이름을 만들면 안 된다.

패키지 이름의 나머지 부분은 어떤 패키지인지 설명하는 하나 이상의 컴포넌트로 구성된다. 패키지명 컴포넌트는 짧아야 하며, 보통 여덟 문자 이하로 만들어진다. 의미가 확실한 약어를 활용하면 좋다. 즉, utilities 대신 util 이라고 하면 좋다는 것, awt 같은 두문자(acronym)도 사용 가능하다.

일반적으로 패키지 명 컴포넌트는 하나의 단어나 약어라야 한다.

자료형

enum이나 어노테이션 자료형 이름을 비롯, 클래스나 인터페이스 이름은 하나 이상의 단어로 구성된다. 각 단어의 첫 글자는 대문자다. Timer나 FutureTask가 그 예다.

두문자 또는 max나 min처럼 널리 쓰이는 약어를 제외하면, 약어 사용은 피해야 한다.

두문자의 경우 전부 대문자로 써야하는지, 아니면 그 첫글자만 대문자로 써야 하는지에 대해서는 합의된것이 별로 없다.

HTTPURL vs HttpUrl

메서드, 필드 클래스나 인터페이스와 동일하지만 첫 글자는 소문자로 한다

remove, ensureCapacity

상수 필드 상수 필드는 모두 대문자로 구성하며 문자 사이에는 _로 구분한다.

NEGATIVE_INFINITY

static final 처럼 변경 불가능한 참조 자료형 일때 해당 필드는 상수 필드다. 예를 들면 enum 필드는 전부 상수 필드다. static final이 변경 가능한 객체라도 참조되는 객체가 변경 불가능하면 역시 상수 필드다. 지역 변수 지역 변수 이름은 멤버 이름과 같은 철자 규칙을 따르지만 약어가 허용된다.

i, xref, houseNumber

자료형 인자

임의 자료형은 T

컬렉션 요소 자료형은 E

맵의 키와 값의 경우에는 T, U, V로 하거나 T1, T2, T3로 나열한다.

출처 : 조슈아 블로크, 『 Effective Java 2/E』, 이병준 옮김, 인사이트(2014.9.1), 2쪽 인용.