-
[JAVA] 구글 자바 네이밍 (naming) 가이드JAVA 2021. 9. 29. 15:30
Naming
1. 식별자 (identifiers) 네이밍 규칙
- 모든 식별자는 ASCII 문자와 숫자 그리고 _, $를 써야한다. 그래야 정규 표현식으로 match 할 수 있다.
- 구글 스타일에서 특별한 접두사 (prefixes) 나 접미사 (suffixes)를 사용 하지 않는다.
ex) name_, mName, s_name 이런 변수명은 사용X
2. 식별자 type에 따른 규칙
- 패키지 이름 (package names)
- 모든 패키지 이름은 소문자로 써야한다. '_' 없이 연속적인 단어로 연결해야한다.
ex) com.example.deepspace (O), com.example.deepSpace (X), com.example.deep_space (X) - 클래스 이름 (class names)
- 클래스 이름은 UpperCamelCase로 써야 한다.
- 클래스 이름은 전형적인 명사 (nouns)나 명사절 (noun phrases)로 사용 해야한다.
ex) FileInfo, Drive, ImmutableList
- 인터페이스 이름 (interface names)로 클래스와 비슷하지만 때로는 형용사 (adjectives) 또는 형용사절 (adjective phrases)로 쓴다.
ex) Readable
- 어노테이션 (annotations) 타입을 위한 잘 정립된 컨벤션은 없다.
- 테스트 클래스는 Test로 클래스 이름을 시작해야 한다. - 메서드 이름 (Method names)
- 메서드 이름은 lowerCamelCase로 써야 한다.
- 메서드 이름은 보통 동사 (verbs) 또는 동사절 (verb phrases)를 사용.
ex) sendMessage, stop - 상수 이름 (constant names)
- 상수 이름은 CONSTANT_CASE 를 사용한다. 모든 문자가 대문자이고 '_'로 다음 단어와 연결한다.
- 상수란 static final fields. 불변하고 (immutable) 메서드가 감지 할 수 있는 사이드 에펙트 (side effects)가 없다. - 상수가 아닌 필드 이름 (Non-constant field names)
- 상수가 아닌 필드는 lowerCamelCase로 적는다.
- 명사 또는 명사절이다.
ex) computedValues, index - 매개변수 이름 (parameter names)
- 매개변수 이름은 lowerCamelCase 로 써야 한다.
- 한글자인 매개변수 이름은 피해야 한다. - 지역 변수 이름 (local variable names)
- 지역 변수 이름은 lowerCamelCase 로 써야 한다.
- 지역 변수가 final (불변 immutable) 이더라도 전역 변수가 아니면 상수로 취급되면 안된다. - 타입 변수 이름 (type variable names)
- 두 가지 스타일로 각 타입 변수 네이밍이 된다.
- 한 글자 대문자 (뒤에 숫자 한자리 붙어도 된다.)
ex) E, T, X, T2
- 클래스 이름에 사용되면 RequestT, FooBarT 이와 같이 사용된다. - 카멜 케이스 (Camel case) 로 변환하는 방법
- 절 (phrase)를 plain ASCII로 바꾸고 어퍼스트로피(')를 지운다.
ex) Mincheol's computer -> Mincheols computer
- 공백과 쉼포로 단어를 쪼갠다. (iOS와 같이 이미 사용되던 컨벤션이 있으면 그대로 지켜준다.)
- 모든 단어를 소문자로 바꿔 준 다음에 각 단어의 첫 글자만 대문자로 바꿔준다. 축약어 acronym도 포함.
- 마지막으로 하나의 식별자로 합쳐준다.
* 본 내용은 Google Java Style Guide에서 내용을 가져옴 - https://google.github.io/styleguide/javaguide.html#s5-naming
'JAVA' 카테고리의 다른 글
[JAVA] java.io.File 의 mkdir()과 mkdirs() (0) 2021.11.02 [IntelliJ] Google Style Formatter 적용 방법 (0) 2021.09.29 [JAVA] this 키워드 (0) 2021.09.29 [JAVA] 알고리즘 풀이를 위한 자바 입출력 (0) 2021.09.27 [JAVA] 상속 Implements, extends 차이 (0) 2021.09.15 - 패키지 이름 (package names)