βš™οΈ 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