⚙️ backend

[Java] Google Java Style Guide - 5. Naming

dev!n 2023. 5. 1. 23:15
이 글은 구글 자바 스타일 가이드의 네이밍 파트를 번역・정리한 글입니다.

목차

    모든 식별자에 대해

    ASCII 문자 또는 숫자로만 작성되어야 하며, 정규식 [\w+]에 매치되는 모든 이름이 가능합니다.

    \w 는 [A-z0-9_]와 동일.

    특별한 접두사나 접미사를 붙일 필요가 없으면 다음과 같이 이름 짓지 않습니다.

    • name_
    • mName
    • s_name
    • kName

     

    패키지 이름

    패키지 이름은 소문자와 숫자만 사용합니다(_ 없음). 연속되는 단어는 간단히 연결합니다.

    • com.example.deepSpace ❌
    • com.example.deep_space ❌
    • com.example.deepspace ✅

     

    클래스 이름

    클래스 이름은 대문자로 작성됩니다.

    클래스 이름은 일반적으로 명사 또는 명사구입니다.

    • Character
    • ImmutableList

    인터페이스 이름도 명사 또는 명사구(예: List)일 수 있지만, 형용사 또는 형용사구 대신 형용사일 수도 있습니다.

    • Readable

    테스트 클래스는 이름이 Test로 끝나는 이름을 갖습니다

    • HashIntegrationTest

    하나의 클래스에 대한 테스트인 경우, 해당 클래스의 이름에 Test를 더하여 이름을 짓습니다.

    • HashImplTest

     

    메소드 이름

    메서드 이름은 소문자로 작성됩니다.

    메서드 이름은 일반적으로 동사 또는 동사 구문입니다.

    • sendMessage
    • stop.

    JUnit 테스트 메서드 작성 시 논리적 구성 요소를 구분하기 위해 밑줄을 사용할 수도 있습니다.

    • transferMoney_deductsFromSource)

     

    상수 이름

    상수는 내용이 거의 불변이고 메서드에 감지할 수 있는 부작용이 없는 정적 최종 필드입니다.

    상수 이름은 모두 대문자로 된 UPPER_SNAKE_CASE를 사용하며, 각 단어는 밑줄 하나로 다음 단어와 구분됩니다. 일반적으로 명사 또는 명사 구문으로 작성합니다.

    // Constants
    static final int NUMBER = 5;
    static final ImmutableList<String> NAMES = ImmutableList.of("Ed", "Ann");
    static final Map<String, Integer> AGES = ImmutableMap.of("Ed", 35, "Ann", 32);
    static final Joiner COMMA_JOINER = Joiner.on(','); // because Joiner is immutable
    static final SomeMutableType[] EMPTY_ARRAY = {};
    
    // Not constants 요소의 변경 가능 여지가 있기 때문에 상수라고 하지 않습니다.
    static final Set<String> mutableCollection = new HashSet<String>();
    static final ImmutableSet<SomeMutableType> mutableElements = ImmutableSet.of(mutable);
    static final ImmutableMap<String, SomeMutableType> mutableValues =
        ImmutableMap.of("Ed", mutableInstance, "Ann", mutableInstance2);
    static final Logger logger = Logger.getLogger(MyClass.getName());
    static final String[] nonEmptyArray = {"these", "can", "change"};
    

     

    상수가 아닌 필드 이름

    상수가 아닌 필드 이름(정적 또는 기타)은 소문자로 작성됩니다.

    이러한 이름은 일반적으로 명사 또는 명사 구문입니다.

    • computedValues
    • index

     

    파라미터 이름

    매개변수 이름은 소문자로 작성됩니다.

    public 메서드라면 한 문자로 된 매개변수 이름은 피해야 합니다.

     

    로컬 변수 이름

    로컬 변수 이름은 소문자로 작성됩니다.

    최종적이고 불변인 경우에도 로컬 변수는 상수로 간주되지 않으므로 상수 스타일로 작성해선 안됩니다.

     

    Type 변수 이름

    각 유형 변수의 이름은 두 가지 스타일 중 하나로 지정됩니다:

    대문자 하나에 선택적으로 숫자 하나가 뒤따릅니다.

    (예: E, T, X, T2)

    • E
    • T
    • X
    • T2

    클래스에 사용되는 형식의 이름 뒤에 대문자 T가 오는 형식

    • RequestT
    • FooBarT