dsc-sookmyung / 2023-01-Effective-Java-Study

이펙티브 자바 공부하는 스터디입니다
2 stars 3 forks source link

Item68. 일반적으로 통용되는 명명 규칙을 따르라 #70

Open letmeloveyou82 opened 1 year ago

letmeloveyou82 commented 1 year ago

자바 플랫폼의 명명 규칙은 잘 정립되어 있고, 그중 많은 것이 자바 언어 명세[JLS, 6.1]에 기술되어 있다.

자바의 명명 규칙은 크게 철자문법, 두 범주로 나뉜다.

1. 철자 규칙

패키지, 클래스, 인터페이스, 메서드, 필드, 타입 변수의 이름을 다룬다.

특별한 이유 없으면 반드시 따라야 한다.

식별자 타입 | 예 -- | -- 패키지와 모듈 | org.junit.jupiter.api, com.google.common.collect 클래스와 인터페이스 | Stream, FutureTask, LinkedHashMap, HttpClient 메서드와 필드 | remove, groupingBy, getCrc 상수 필드 | MIN_VALUE, NEGATIVE_INFINITY 지역변수 | i, denom, houseNum 타입 매개변수 | T, E, K, V, X, R, U, V, T1, T2

(1) 패키지와 모듈 이름

(2) (열거 타입과 애너테이션을 포함해) 클래스와 인터페이스 이름

(3) 메서드와 필드 이름

단, 상수 필드는 예외

(4) 지역 변수 이름

(5) 타입 매개변수 이름

2. 문법 규칙

철자 규칙과 비교하면 더 유연하고 논란도 많다.

(1) 패키지 이름

규칙 따로 없음

(2) 클래스, 인터페이스, 애너테이션 이름

2-1) 클래스 이름

2-2) 인터페이스 이름

2-3) 애너테이션 이름

(3) 메서드, 필드 이름

3-1) 메서드 이름

특별한 메서드 이름

3-2) 필드 이름

클래스, 인터페이스, 메서드 이름에 비해 덜 명확 + 덜 중요하다. API 설계 잘했으면 필드가 노출될 일이 거의 없기 때문이다.

(4) 지역변수 이름

3. 마치며

표준 명명 규칙을 체화하여 자연스럽게 베어 나오도록 하자.

철자 규칙은 직관적이라 모호한 부분이 적은 데 반해, 문법 규칙은 더 복잡하고 느슨하다.

자바 언어 명세[JLS, 6.1]의 말을 인용하자면, “오랫동안 따라온 규칙과 충돌한다면 그 규칙을 맹종해서는 안 된다” 상식이 이끄는 대로 따르자.