[Effective Java] 아이템 68 : 일반적으로 통용되는 명명 규칙을 따르라

Loopy·2022년 12월 3일
0

이펙티브 자바

목록 보기
66/76
post-thumbnail

🌱 철자 규칙

☁️ 패키지와 모듈 이름

각 요소를 . 으로 구분하여 계층적으로 짓는다.
만약 조직 바깥에서도 사용될 패키지라면, 조직의 인터넷 도메인 이름을 역순으로 사용하면 된다. ex) com.google

각 패키지 이름은 소문자를 사용한 8자 이하의 짧은 단어 혹은 약어를 추천한다.
utilities 보다는 util 이 좋다.

☁️ 클래스와 인터페이스 이름

하나 이상의 단어로 이루어지며, 각 단어는 대문자로 시작해야 한다
단어의 첫 글자만 딴 약자나 max, min 처럼 널리 통용되는 줄임말을 제외하고 단어를 줄여 쓰면 안된다.

☁️ 메서드와 필드 이름

첫 글자를 소문자로 쓴다는 점만 빼면 클래스 명명 규칙과 같다. 만약 첫 단어가 약자라면, 단어 전체가 소문자여야 한다.

🔖 상수 필드

단, 상수 필드는 예외적으로 모두 대문자로 쓰며 단어 사이는 밑줄로 구분한다.

private static final int NEGATIVE_INFINITY  = XX

주의할 점은 static final 필드이면서, 가리키는 객체가 불변이라면 비록 그 타입은 가변이더라도 상수 필드라는 것이다. 즉, static final 타입이 기본 타입이나 불변 참조 타입이라면 상수 필드에 해당한다.

☁️ 타입 매개변수

타입 매개변수의 이름은 보통 한 문자로 포함한다.

T : 임의의 타입
E : 컬렉션 원소의 타입
K, V: 맵의 키와 값
X : 예외
R : 메서드 반환 타입
T, U, V (T1, T2, T3) : 임의 타입의 시퀀스

🌱 문법 규칙

☁️ 클래스

보통 단수 명사나 명사구를 사용한다.

  1. 객체를 생성할 수 없는 클래스의 이름은 보통 복수형 명사로 짓는다.(ex) Collectors )
  2. 인터페이스 이름은 클래스와 똑같거나 able 혹은 ible 로 끝나는 형용사로 짓는다. (ex) Runnable, Accessible)
  3. 애너테이션은 명사, 동사, 전치사, 형용사가 두루 쓰인다. (ex) Inject, ImplementedBy)

☁️ 메서드

어떤 동작을 수행하는 메서드 이름은 동사나 동사구로 짓는다. 단, 동사는 현재형이여야 한다. (ex) drawImage )

  • is, has : boolean 값을 반환하는 메서드 (ex) isDigit, hasSiblings)

  • 명사, get : 해당 인스턴스의 속성을 반환하면서 반환 타입이 boolean 이 아닌경우 (ex) size, getTime )

    if (car.speed() > 2 * SPEED_LIMIT)
        generateAudibleAlert("경찰 조심하세요!");
  • toType : 객체의 타입을 바꿔서 다른 타입의 다른 객체를 반환하는 인스턴스 메서드 (ex) toString, toArray )

  • asType : 객체의 내용을 다른 뷰로 보여주는 메서드 (ex) asList )

  • typeValue : 객체의 값을 기본 타입 값으로 반환하는 메서드 (ex) intValue )

🔖 정적 팩터리 이름
from, of, valueOf, instance, getInstance, newInstance, getType, newType을 흔히 사용

☁️ 필드 이름

필드 이름에 관한 문법 규칙은 클래스, 인터페이스, 메서드 이름에 비해 덜 명확하고 덜 중요하다. API 설계를 잘 했다면 필드가 직접 노출될 일이 거의 없기 때문이다.

  • boolean 타입 : boolean 접근자 메서드에서 앞 단어를 뺀 형태
  • 이외의 타입 : 명사 / 명사구 사용
profile
개인용으로 공부하는 공간입니다. 잘못된 부분은 피드백 부탁드립니다!

0개의 댓글