Item 34. Enum
int μμ λμ μ΄κ±° νμ μ μ¬μ©νλΌ.
μ΄κ±° νμ μ μΌμ κ°μμ μμ κ°μ μ μνμ¬ κ·Έ μΈμ κ°μ νμ©νμ§ μλ νμ μΌλ‘, μ ν΄μ§ κ°λ§μ μ¬μ©νκ³ μΆμ λ μ¬μ©νλ€. μ΄κ±° νμ μ§μ μ΄μ μλ μ μ μμλ₯Ό μ¬μ©νμ¬ κ΅¬ννμμ§λ§ νμ μμ μ 보μ₯νμ§ μκ³ κ°λ μ±λ μ’μ§ μμλ€.
μ΄κ±° νμ
μ΄κ±° νμ μ λ€μκ³Ό κ°μ΄ μ μν μ μλ€.
C/C++μ enum
κ³Ό λ¬λ¦¬ μ΄κ±° νμ
μ μμ ν ννμ ν΄λμ€κΈ° λλ¬Έμ λ€λ₯Έ μΈμ΄μ μ΄κ±° νμ
λ³΄λ€ ν μ μλ μΌμ΄ λ§λ€.
μ΄κ±° νμ
μμ²΄κ° ν΄λμ€μ΄κΈ° λλ¬Έμ, μμ νλλΉ μμ μ μΈμ€ν΄μ€λ₯Ό νλμ© λ§λ€μ΄ public static final νλλ‘ κ³΅κ°λλ κ²μ΄λ€.
κ·Έμ λ°λΌ μκΈ°λ νΉμ§μ λ€μκ³Ό κ°λ€.
λ°μμ μ κ·Όν μ μλ μμ±μλ₯Ό μ 곡νμ§ μμΌλ―λ‘ μΈμ€ν΄μ€λ₯Ό μ§μ μμ±ν μ μμ
μ§μ μμ±νκ±°λ νμ₯ λΆκ°λ₯νλ―λ‘ μΈμ€ν΄μ€λ€μ 미리 μ μλ μμ νλ μ©λ§ μ‘΄μ¬ν¨(μ±κΈν΄μ μΌλ°νν νν)
미리 μ μλ μμλ§ μ¬μ©ν μ μκΈ° λλ¬Έμ μ»΄νμΌνμμ λ€ μ μ μλ μμ μ§ν©μ΄λΌλ©΄ μ΄κ±° νμ μ μ¬μ©νλ κ²μ΄ μ’λ€.
λ©μλμ νλ μΆκ°
κ²°κ΅ μμ ν ννμ ν΄λμ€κΈ° λλ¬Έμ μ΄κ±° νμ μ λ€μκ³Ό κ°μ΄ λ©μλμ νλλ₯Ό μΆκ°ν μ μλ€.
μ λ΅ μ΄κ±° νμ
ν¨ν΄(Strategy Enum Pattern)
μ΄κ±° νμ μ μ¬μ©νλ©΄ μμλΌλ¦¬ μ½λλ₯Ό 곡μ νκΈ° μ΄λ ΅λ€λ λ¨μ μ΄ μλ€. μλ μ½λλ μ£Όμ€/μ£Όλ§μ λ°λΌ μμ μλΉμ κ³μ°νλ μ½λμΈλ°, switch λ¬Έμ ν΅ν΄ μμ μλΉμ κ³μ°νκ³ μλ€. μ°μ μ κ°κ²°νκ² ννλλ μ½λμ§λ§, κ΄λ¦¬ κ΄μ μμλ μνν μ½λλ‘, ν΄κ°μ κ°μ μλ‘μ΄ κ°μ΄ μΆκ°λλ©΄ switch λ¬Έμ μ°Ύμ ν΄λΉ case λ¬Έμ μΆκ°ν΄μΌ νλ€.
μ΄λ₯Ό λ³΄λ€ μ ννκ³ μμ μ μΌλ‘ ꡬννκΈ° μν΄μ λ κ°μ§ λ°©λ²μ΄ μ‘΄μ¬νλλ°, λ λ°©μ λͺ¨λ κ°λ μ±μ΄ λ¨μ΄μ§κ³ μ½λκ° μ₯ν©ν΄μ§λ λ¨μ μ΄ μλ€.
μμ μλΉμ κ³μ°νλ μ½λλ₯Ό λͺ¨λ μμμ μ€λ³΅νμ¬ μμ±
κ³μ° μ½λλ₯Ό νμΌ/μ£Όλ§μ©μΌλ‘ λλ κ°κ° λμ°λ―Έ λ©μλλ‘ μμ±ν λ€ κ° μμκ° μλ§λ λ©μλ νΈμΆ
μ΄λ¬ν λ°©λ²μ΄ μλ μμλ₯Ό μΆκ°ν λ μμ±μμμ μ λ΅μ μ ννλλ‘ νμ¬ ν΄κ²°ν μ μλ€.
μ΄λ κ² νλ©΄ κΈ°μ‘΄ switchλ¬Έλ³΄λ€ μ½λ μμ λ§μμ§μ§λ§, μλ‘μ΄ μμλ₯Ό μΆκ°ν λλ§λ€ switchλ¬Έμ μ°Ύμ caseλ¬Έμ μΆκ°νλ κ²λ³΄λ€ ν¨μ¬ μμ νκ³ μ μ°νλ€. μ΄λ¬ν λ°©λ²μ μ λ΅ μ΄κ±° νμ ν¨ν΄μ΄λΌ νλ©°, μ΄κ° νμ μμ μΌλΆκ° κ°μ λμμ 곡μ νλ€λ©΄ μ΄ λ°©μμ μ¬μ©νλ κ²μ΄ μ’λ€.
Last updated
Was this helpful?