π€ Chapter 4: μ€μ©μ£Όμ νΈμ§μ¦
Tip 36. μ¬λ¬λΆμ μλ²½ν μννΈμ¨μ΄λ₯Ό λ§λ€ μ μλ€.
μ€μ©μ£Όμ νλ‘κ·Έλλ¨Έλ μκΈ° μμ μμ λ―Ώμ§ μλλ€. μ΄λ λꡬλ, μ¬μ§μ΄λ μκΈ° μμ λ μλ²½ν μ½λλ₯Ό μμ±ν μ μμμ μκΈ° λλ¬Έμ μ€μ©μ£Όμ νλ‘κ·Έλλ¨Έλ μμ μ μ€μμ λλΉν λ°©μ΄μ± μ λ§λ ¨νλ€.
π Topic 23. κ³μ½μ μν μ€κ³β
κ³μ½μ μμ κ³Ό μλνΈμ κΆλ¦¬ λ° μ± μμ μ μνλ€. κ·ΈλΏλ§ μλλΌ νμͺ½μ΄ κ³μ½μ μ΄κ²Όμ κ²½μ°μ λμλ κ³μ½ μ¬νμ ν¬ν¨λλ€.
π₯ DBCβ
DBC(κ³μ½μ μν μ€κ³)λ λ¨μνμ§λ§ κ°λ ₯ν κΈ°λ²μΌλ‘, νλ‘κ·Έλ¨μ μ νμ±μ 보μ₯νκΈ° μν΄ μννΈμ¨μ΄ λͺ¨λμ κΆλ¦¬μ μ± μμ λ¬Έμννκ³ ν©μνλ λ°μ μ΄μ μ λ§μΆλ€. μ νν νλ‘κ·Έλ¨μ΄λ 무μμΈκ°? μμ μ΄ νλ μΌμ΄λΌκ³ μ£Όμ₯νλ κ²λ³΄λ€ λ§μ§λ μ μ§λ μκ² λ± κ·Έλ§νΌλ§ νλ νλ‘κ·Έλ¨μ΄λ€. μ΄ μ£Όμ₯μ λ¬Έμννκ³ κ²μ¦νλ κ²μ΄ "κ³μ½μ μν μ€κ³"μ ν΅μ¬μ΄λ€.
μννΈμ¨μ΄ μμ€ν μ λͺ¨λ ν¨μμ λ©μλλ λκ°λ₯Ό νλ€. κ·Έ λκ°λ₯Ό μμνκΈ° μ μ ν΄λΉ ν¨μλ μΈμμ μνμ λν΄ μ΄λ€ μ μ 쑰건μ κ°κ³ μμ ν κ³ , 루ν΄μ΄ λλ νμλ μΈμμ μνκ° μ΄λ ν κ²μ΄λΌκ³ μ μΈν μ μμ κ²μ΄λ€.
μ ν 쑰건β
- 루ν΄μ΄ νΈμΆλκΈ° μν΄ μ°Έμ΄μ΄μΌ νλ κ².
- μ¦, 루ν΄μ μꡬ μ¬νμ΄λ€. 루ν΄μ μ ν μ‘°κ±΄μ΄ μλ°λ κ²½μ°μλ 루ν΄μ΄ νΈμΆλμ΄μλ μ λλ€. μ λλ‘ λ λ°μ΄ν°λ₯Ό μ λ¬νλ κ²μ νΈμΆνλ μͺ½μΌ μ± μμ΄λ€.
νν 쑰건β
- 루ν΄μ΄ μκΈ°κ° ν κ²μ΄λΌκ³ 보μ₯νλ κ².
- μ¦, 루ν΄μ΄ μλ£λμμ λ μΈμμ μνλ€. 루ν΄μ νν μ‘°κ±΄μ΄ μλ€λ κ²μ 곧 루ν΄μ΄ μ’ κ΅μλ μ’ λ£λ κ²μ΄λΌλ κ±Έ μλ―Ένλ€. 무ν λ°λ³΅μ νμ©λμ§ μλλ€.
ν΄λμ€ λΆλ³μβ
- νΈμΆμμ μ μ₯μμ λ³Ό λλ μ΄ μ‘°κ±΄μ΄ μΈμ λ μ°ΈμΈ κ²μ ν΄λμ€κ° 보μ₯νλ€.
- 루ν΄μ λ΄λΆ μ²λ¦¬ λμ€μλ λΆλ³μμ΄ μ°Έμ΄ μλ μλ μμ§λ§, 루ν΄μ΄ λλκ³ νΈμΆμλ‘ μ μ΄κΆμ΄ λ°νλλ μμ μλ λΆλ³μμ΄ μ°Έμ΄ λμ΄μΌ νλ€.
루ν΄κ³Ό κ·Έ 루ν΄μ νΈμΆνλ €λ μ½λ κ°μ κ³μ½μ λ€μκ³Ό κ°λ€.
λ§μ½ νΈμΆμκ° λ£¨ν΄μ λͺ¨λ μ ν 쑰건μ μΆ©μ‘±νλ€λ©΄ ν΄λΉ 루ν΄μ μ’ λ£ μ λͺ¨λ νν 쑰건과 λΆλ³μμ΄ μ°Έμ΄ λλ κ²μ 보μ₯νλ€.
λ§μ½ κ³μ½ λΉμ¬μ μ€ μ΄λ νμͺ½μ΄λΌλ μ΄ κ³μ½ λ΄μ©μ μ§ν€μ§ λͺ»νλ©΄ ν΄κ²° λ°©μμ΄ μ€νλλ€. μμΈκ° λ°μν μλ μκ³ μλλ©΄ νλ‘κ·Έλ¨μ μ’ λ£μν¬ μλ μλ€. λ¬΄μ¨ μΌμ΄ λ²μ΄μ§λ μ§ νμ€ν μ μ κ³μ½μ λΆμνμ§ λͺ»νλ κ²μ λ²κ·ΈλΌλ κ²μ΄λ€. μ΄κ²μ κ²°μ½ λ°μν΄μλ μ λλ μΌμ΄λ©°, κ·Έλ κΈ° λλ¬Έμ μ ν 쑰건μ μ΄μ©ν΄μ μ¬μ©μ μ λ ₯κ°μ κ²μ¦νλ€κ±°λ ν΄μλ μ λλ€.
Tip 37. κ³μ½μΌλ‘ μ€κ³νλΌ.
κ³μΌλ¦λ± μ΄(lazy) μ½λλ₯Ό κ°μ‘°νκ³ μΆλ€. μμνκΈ° μ μ μμ μ΄ μμ©ν κ²μ μ격νκ² νμΈνκ³ , λ΄μ΄ μ€ κ²μ λν΄μλ μ΅μνλλ₯Ό μ½μνλ κ²μ΄λ€. 무μμ΄λ μμ©νκ³ κ²°κ³Όλ‘λ 무μμ΄λ λ€ μ€λ€κ³ κ³μ½μ μ°μ¬ μλ€λ©΄, μ¬λ¬λΆμ μ λ§μ΄μ§ λ§μ μ½λλ₯Ό μμ±ν΄μΌ ν κ²μ΄λ€.
π₯ DBC ꡬνβ
μ½λλ₯Ό μμ±νκΈ° μ μ μ ν¨ν μ λ ₯ λ²μκ° λ¬΄μμΈμ§, κ²½κ³ μ‘°κ±΄μ΄ λ¬΄μμΈμ§, 루ν΄μ΄ λ μ λ¬νλ€κ³ μ½μνλμ§, νΉμ λ μ€μνκ²λ 무μμ μ½μνμ§ μλμ§ λ± λμ΄νλ κ²λ§μΌλ‘λλ λμ μννΈμ¨μ΄λ₯Ό μμ±νλ λ°μ μμ²λ λμμ΄ λλ€.
π₯ DBCμ μΌμ° λ©μΆκΈ°β
DBCλ μ°λ¦¬μ "μΌμ° μλμ λ©μΆ°λΌ."λΌλ κ°λ κ³Ό μ μ΄μΈλ¦°λ€. λ¨μ λ¬Έμ΄λ DBC λ°©μμ μ¬μ©νμ¬ μ ν 쑰건μ΄λ νν 쑰건, λΆλ³μμ κ²μ¦νλ©΄ λ μΌμ° λ©μΆκ³ , λ¬Έμ μ λν λ³΄λ€ μ νν μ 보λ₯Ό μλ €μ€ μ μμ κ²μ΄λ€.
λ¬Έμ λ₯Ό μ°Ύκ³ μμΈμ λ°νκΈ° μν΄μλ μ¬κ³ κ° λ μ§μ μμ μΌμ° λ©μΆλ κ²μ΄ μ 리νλ€.
π₯ μλ―Έλ‘ μ λΆλ³μβ
μλ―Έλ‘ μ λΆλ³μμ μ¬μ©νλ©΄ μΌμ’ μ μ² νμ κ³μ½μΈ μ λ μ΄κ²¨μλ μ λλ μꡬ μ¬νμ ννν μ μλ€.
μ΄κ²¨μλ μ λλ κ³ μ λ κ·μΉμΈ μꡬ μ¬νκ³Ό κ²½μμ§μ΄ λ°λλ©΄ μΌλ§λ μ§ μμ΄μ§ μ μλ λ¨μν μ μ± μ νΌλνμ§ λ§μμΌ νλ€. μλ―Έλ‘ μ λΆλ³μμ 무μΈκ°κ° νμ μ§μ§ μλ―Έλ₯Ό μ€μ¬μ΄ λμ΄μΌ νλ©°, ν¨μ¬ μλμ μΌλ‘ λ³νλ λΉμ¦λμ€ κ·μΉμ²λΌ μΌμμ μΈ μ μ± μ μν₯μ λ°μΌλ©΄ μ λλ€. μ°λ¦¬κ° μλ―Έλ‘ μ λΆλ³μμ΄λΌλ μ©μ΄λ₯Ό μ¬μ©νλ κ²μ μ΄ λλ¬Έμ΄λ€.
λΆλ³μμ μκ²©μ΄ μλ μꡬ μ¬νμ μ°Ύμλ€λ©΄ μ¬λ¬λΆμ΄ μμ±νλ λͺ¨λ λ¬Έμμ μ λλ¬λλλ‘ λ§λ€μ΄λΌ. κ·Έκ² μΈ λΆμ© μλͺ νλ μꡬ μ¬ν λ¬Έμμ λ²νΈλΆμΈ λͺ©λ‘μ΄λ , νΉμ λͺ¨λ μ¬λμ΄ λ³Ό μ μλ κ³΅μ© νμ΄νΈλ³΄λμ μ°μΈ 컀λ€λ λ©λͺ¨μ΄λ λλ λͺ¨λκ° μ¬λ¬λΆμ΄ μ°Ύλ μλ―Έλ‘ μ λΆλ³μμ μ λλ¬λ΄μΌ νλ€. λͺ ννκ³ λͺ¨νΈν μ μ΄ μκ² μμ νλλ‘ λ Έλ ₯νλΌ.
μ€λ₯ λ°μ μ μλΉμμ μ μ₯μ μ°μ νλΌ.
μ΄κ²μ μμ€ν μ μ¬λ¬ λ€λ₯Έ λΆλΆμ μ μ©ν μ μλ λΆλͺ νκ³ κ°λ΅νλ©° λͺ νν μ μΈμ΄λ€. μ΄λ λͺ¨λ μμ€ν μ¬μ©μμ λ§Ίλ κ³μ½μ΄λ©° λμμ λν μ°λ¦¬μ 보μ¦μ΄λ€.
π₯ λμ κ³μ½κ³Ό μμ΄μ νΈβ
μ§κΈκΉμ§ μ°λ¦¬λ κ³μ½μ΄ κ³ μ λΆλ³μ λͺ μΈλΌκ³ κ°μ νκ³ μ΄μΌκΈ°νλ€. νμ§λ§ μμ¨ μμ΄μ νΈμ 무λμμλΌλ©΄ μ΄μΌκΈ°λ λ¬λΌμ§λ€. "μμ¨"μ μ μ λ°λ₯΄λ©΄ μμ΄μ νΈλ μμ μ΄ λ°λ₯΄κΈ° μμΉ μλ μꡬλ₯Ό κ±°μ ν μμ κ° μλ€. κ³μ½μ μ¬νν μμ λ μλ€. "κ·Έκ±Έ μ κ³΅ν΄ λ릴 μλ μμ΄μ. νμ§λ§ μ΄λ €λΆμ΄ μ΄κ±Έ μ£Όμ λ€λ©΄ μ λ λκ° λ€λ₯Έ κ±Έ λ릴 μλ μμ΄μ."
μμ΄μ νΈ κΈ°μ μ μμ‘΄νλ μ΄λ€ μμ€ν μ΄κ±΄ κ³μ½μ ν©μκ° κ²°μ μ μΌλ‘ μ€μνλ€λ μ μ λΆλͺ νλ€. κ³μ½ λ΄μ©μ΄ λ§€λ² λμ μΌλ‘ μμ±λλλΌλ λ§μ°¬κ°μ§λ€.
π Topic 24. μ£½μ νλ‘κ·Έλ¨μ κ±°μ§λ§μ νμ§ μλλ€.β
μ°λ¦¬λ λλ€μκ° μ½λλ₯Ό μμ±ν λ νμΌμ΄ μ±κ³΅μ μΌλ‘ λ«νλμ§, νΉμ νΈλ μ΄μ€ λ¬Έμ΄ μ° λ¦¬ μμλλ‘ μ°νλμ§ νμΈνμ§ μμλ μ μ΄ μμ κ²μ΄λ€. κ·Έλ¦¬κ³ λ€λ₯Έ λͺ¨λ μ‘°κ±΄μ΄ λ κ·Έλλ‘λΌλ©΄ κ·Έλ΄ νμκ° μμμμ§λ λͺ¨λ₯Έλ€. λ¬Έμ μ μ½λλ μ μμ μΈ μν©μμλ μ€ν¨νμ§ μμμ κ²μ΄λ€. νμ§λ§ μ°λ¦¬λ μ§κΈ λ°©μ΄μ μΌλ‘ μ½λ©νκ³ μλ€.
λ°μ΄ν°κ° μ°λ¦¬κ° μκ°νλ λλ‘μΈμ§, μλΉμ€μμ μλνλ μ½λκ° μ°λ¦¬κ° μκ°νλ κ·Έ μ½λμΈμ§ νμΈν΄μΌ νλ€.
λͺ¨λ μ€λ₯λ μ 보λ₯Ό μ€λ€. μ¬λ¬λΆμ μ€λ₯κ° λ°μν 리 μλ€κ³ μμ μ μ€λνκ³ μ κ·Έκ±Έ 무μνκΈ°λ‘ ν μλ μλ€. λ°λ©΄μ μ€μ©μ£Όμ νλ‘κ·Έλλ¨Έλ λ§μ½ μ€λ₯κ° λ°μνλ€λ©΄ μ λ§λ‘ λκ° λμ μΌμ΄ μκΈ΄ κ²μ΄λΌκ³ μμ μκ² μ΄μΌκΈ°νλ€. μΌλ¨ κ·Έλμ μ€λ₯ λ©μμ§ μ’ μ½μ΄λΌ.
π₯ μ‘μ ν κ·Έλ₯ λμμ£Όλ κ²μ λ¬Όκ³ κΈ°λΏβ
μ΄λ€ κ°λ°μλ λͺ¨λ μμΈλ₯Ό catch
λ rescue
λ‘ μ‘μ ν λ‘κ·Έ λ©μμ§λ₯Ό μ’ μ°μ λ€μ λ€μ μμΈλ₯Ό λ°μνμν€λ κ²μ΄ μ’μ λ°©μμ΄λΌκ³ μ¬κΈ°λ λ―νλ€. μ΄λ₯Ό ν
λ©΄ λ€μκ³Ό κ°μ μμΌλ‘ μ½λλ₯Ό μ΄λ€. μ¬κΈ°μ μ무 μΈμ μμ΄ μ΄ raise
λ νμ¬ μμΈλ₯Ό λ€μ λ°μμν€λ κ²μ΄λ€.
try do
add_score_to_board(score);
rescue InvalidScore
Logger.error("μ¬λ°λ₯΄μ§ μμ μ μλ λν μ μμ. μ’
λ£ν©λλ€.");
raise
rescue BoardServerDown
Logger.error("μ μλ₯Ό λν μ μμ: 보λκ° μ£½μμ. μ’
λ£ν©λλ€.");
raise
rescue StaleTransaction
Logger.error("μ μλ₯Ό λν μ μμ: μ€λλ νΈλμμ
. μ’
λ£ν©λλ€.");
raise
end
μ€μ©μ£Όμ νλ‘κ·Έλλ¨ΈλΌλ©΄ λ€μκ³Ό κ°μ΄ μΈ κ²μ΄λ€.
add_score_to_board(score);
μ΄λ κ² μ½λλ₯Ό μμ±νλ μ΄μ λ λ κ°μ§λ€. 첫째, μ ν리μΌμ΄μ
μ½λκ° μ€λ₯ μ²λ¦¬ μ½λ μ¬μ΄μ 묻νμ§ μλλ€. λ μ€μν λ λ²μ§Έ μ΄μ λ μ½λμ κ²°ν©λλ₯Ό λμ΄μ§ μλλ€λ μ μ΄λ€. κΈΈκ² μ΄ μ½λμμλ add_score_to_board
λ©μλκ° λ°μμν¬ μ μλ λͺ¨λ μμΈλ₯Ό λ€ λμ΄ν΄μΌ νλ€. λ§μ½ λ©μλ μ μκ° μλ‘μ΄ μμΈλ₯Ό μΆκ°νλ©΄ μ΄ μ½λλ μ‘°κΈμ΄μ§λ§ κ°±μ μ΄ νμν μ½λκ° λμ΄ λ²λ¦°λ€. λ³΄λ€ μ€μ©μ μΈ λ λ²μ§Έ μ½λμμλ μλ‘μ΄ μμΈκ° μλμΌλ‘ μ νλλ€.
Tip 38. μΌμ° μλμ λ©μΆ°λΌ.
π₯ λ§μΉμ§ λ§κ³ λ©μΆ°λΌβ
κ°λ₯ν ν 빨리 λ¬Έμ λ₯Ό λ°κ²¬νλ©΄ μ’ λ μΌμ° μμ€ν μ λ©μΆ μ μμΌλ λ λ«λ€. κ³λ€κ° νλ‘κ·Έλ¨μ λ©μΆλ κ²μ΄ ν μ μλ μ΅μ μΈ κ²½μ°κ° ννλ€.
μ΄λ€ νκ²½μμλ μ€ν μ€μΈ νλ‘κ·Έλ¨μ κ·Έλ₯ μ’ λ£ν΄ λ²λ¦¬λ κ²μ΄ μ μ μΉ λͺ»ν μλ μλ€. ν΄μ λμ§ μμ 리μμ€κ° λ¨μ μμ μλ μκ³ , λ‘κ·Έ λ©μμ§λ₯Ό κΈ°λ‘ν΄μΌ ν μλ μκ³ , μ΄λ € μλ νΈλμμ μ μ 리ν΄μΌ νκ±°λ λ€λ₯Έ νλ‘μΈμ€μ μνΈμμ©μ΄ νμν μ§λ λͺ¨λ₯Έλ€.
κ·Έλ μ§λ§ κΈ°λ³Έ μμΉμ λκ°λ€. λ°©κΈ μμ μ μλ μΌμ΄ λ°μνλ€λ κ²μ μ½λκ° λ°κ²¬νλ€λ©΄ νλ‘κ·Έλ¨μ λλ μ ν¨νμ§ μλ€κ³ ν μ μλ€. μ΄μμ μ΄νλ‘ νλ μΌμ λͺ¨λ μμμ©μ κ² λλ€. λλλ‘ λΉ¨λ¦¬ μ’
λ£ν μΌμ΄λ€.
μΌλ°μ μΌλ‘ μ£½μ νλ‘κ·Έλ¨μ΄ λΌμΉλ νΌν΄λ μ΄μν μνμ νλ‘κ·Έλ¨μ΄ λΌμΉλ νΌν΄λ³΄λ€ ν¨μ¬ μ μ λ²μ΄λ€.
π Topic 25. λ¨μ μ νλ‘κ·Έλλ°β
κ·Έλ° μΌμ μ λ μΌμ΄λ 리 μμ΄
"μ΄ μ ν리μΌμ΄μ
μ μΈκ΅μμ μ¬μ©νλ μΌμ μ λ μμ ν
λ° λνλ‘ κ΅μ ννμ§?", "countλ μμκ° λ μ μμ΄.", "λ‘κΉ
μ μ€ν¨ν 리 μμ΄."
μ΄λ° μμΌλ‘ μμ μ κΈ°λ§νμ§ λ§μ, νΉν μ½λ©ν λλ.
Tip 39. λ¨μ λ¬ΈμΌλ‘ λΆκ°λ₯ν μν©μ μλ°©νλΌ.
"νμ§λ§ λ¬Όλ‘ κ·Έλ° μΌμ μ λ μΌμ΄λμ§ μμ κ±°μΌ."λΌλ μκ°μ΄ λ λ€λ©΄ κ·Έλ° μΌμ νμΈνλ μ½λλ₯Ό μΆκ°νλΌ. κ°μ₯ κ°λ¨νκ² μΆκ°νλ λ°©λ²μ λ¨μ λ¬Έμ μ¬μ©νλ κ²μ΄λ€. λλΆλΆμ μΈμ΄ ꡬνμμ μ‘°κ±΄μ΄ μ°ΈμΈμ§ κ±°μ§μΈμ§ νμΈνλ assert
μ μΌμ’
μ μ°Ύμ μ μμ κ²μ΄λ€. μ΄λ° λ¨μ λ¬Έμ μμ²λκ² μ μ©νλ€. λ§€κ° λ³μλ κ²°κ³Όκ° μ λ null
μ΄μ΄μλ μ λλ€λ©΄ λͺ
μμ μΌλ‘ κ²μ¬νλΌ.
assert (result != null);
μλ°λ νμ΄μ¬μ λ¨μ λ¬Έμλ λ¬Έμμ΄λ‘ μ€λͺ μ μΆκ°ν μ μλ€. κΌ μ€λͺ μ λ£μ΄λΌ.
assert result != null && result.size() > 0 : "XYZμ κ²°κ³Όκ° λΉμ΄ μμ";
λ¨μ μ μκ³ λ¦¬μ¦μ λμμ κ²μ¬νλ λ°λ μ μ©νλ€. μ¬λ¬λΆμ΄ μμ£Ό κΈ°λ°ν μ λ ¬ μκ³ λ¦¬μ¦μΈ my_sort
λ₯Ό μμ±νλ€λ©΄ κ·Έκ²μ΄ μ λλ‘ μλνλμ§ νμΈνλΌ.
books = my_sort(find("SF"))
assert(is_sorted?(books))
νμ§λ§ μ§μ§ μ€λ₯ μ²λ¦¬λ₯Ό ν΄μΌ νλ κ³³μ λ¨μ μ λμ μ¬μ©νμ§λ λ§λΌ. λ¨μ μ κ²°μ½ μΌμ΄λλ©΄ μ λλ κ²λ€μ κ²μ¬νλ€. λ€μκ³Ό κ°μ μ½λλ₯Ό μμ±ν΄μλ μ λλ€.
puts("'Y'λ 'N'μ μ
λ ₯νμμ€: ")
ch = gets[0] # μλ΅μ 첫 κΈμλ§ λΆλ¦¬
assert((ch == 'Y')) || (ch == 'N') # λͺΉμ λμ μκ°μ΄λ€!
κ·Έλ¦¬κ³ λ¨μ μ΄ μ€ν¨ν λ λλΆλΆμ΄ assert
ꡬνμ΄ νλ‘μΈμ€λ₯Ό μ’
λ£μν¨λ€κ³ ν΄μ μ¬λ¬λΆμ΄ μμ±νλ λ²μ λ κ·ΈλμΌ ν μ΄μ λ μλ€. λ§μ½ 리μμ€λ₯Ό ν΄μ ν νμκ° μλ€λ©΄ λ¨μ μΌλ‘ μΈν΄ λ°μνλ μμΈλ₯Ό μ‘κ±°λ νλ‘κ·Έλ¨ μ’
λ£λ₯Ό μ€μ§μν€κ³ μ¬λ¬λΆμ μ€λ₯ μ²λ¦¬ 루ν΄μ μ€ννλΌ. λ€λ§, νλ‘μΈμ€κ° μ£½λ λͺ λ°λ¦¬μ΄μ μκ° λμ μ¬λ¬λΆμ μ½λλ₯Ό μ€νν λ μ μ΄μ λ¨μ μ μ€ν¨νκ² ν μλͺ»λ μ 보μ μμ‘΄νμ§ μλλ‘ νλΌ.
π₯ λ¨μ κ³Ό λΆμμ©β
λ¨μ λ¬Έμ μΈ λ 쑰건μ νκ°νλ μ½λμ λΆμμ©(side effect)μ΄ μλ€λ©΄ μ΄λ° μΌμ΄ λ°μν μ μλ€. μλ₯Ό λ€μ΄ μ½λλ₯Ό λ€μκ³Ό κ°μ΄ μμ±νλ κ²μ 그리 μ’μ μκ°μ΄ μλλ€.
while (iter.hasMoreElements()) {
assert(iter.nextElement() != null);
Object obj = iter.nextElement();
// ...
}
λ¨μ λ¬Έ μμ μλ .nextElement()
νΈμΆμ μ΄ νΈμΆμ΄ λ°ννλ μμ λ€μμΌλ‘ λ°λ³΅μλ₯Ό μ΄λμν€λ λΆμμ©μ΄ μλ€. κ·Έλ¬λ―λ‘ μ΄ λ°λ³΅λ¬Έμ 컬λ μ
μ μμ μ€ μ λ°λ§ μ²λ¦¬νκ² λλ€. λ€μκ³Ό κ°μ΄ μμ±ν΄μΌ νλ€.
while (iter.hasMoreElements()) {
Object obj = iter.nextElement();
assert(obj != null);
// ...
}
μ΄λ λλ²κΉ νμκ° λλ²κΉ νλ €λ μμ€ν μ νλμ λ°κΏ λ²λ¦¬λ μΌμ’ μ "νμ΄μ λ²κ·Έ"μ μΈ λ¬Έμ λ€.
π₯ λ¨μ κΈ°λ₯μ μΌ λ¬λΌβ
λ¨μ λ¬Έμ κ΄ν νν μ€ν΄κ° νλ μλ€. λλ΅ λ€μκ³Ό λΉμ·νλ€.
λ¨μ μ μ½λλ₯Ό λλ¦¬κ² λ§λ λ€. λ¨μ μ μΌμ΄λμλ μ λλ μΌλ€μ κ²μ¬νκΈ° λλ¬Έμ μ½λ μμ λ²κ·Έκ° μμ λλ§ λ¨μ κ²μ¬κ° μ€ν¨ν κ²μ΄λ€. μΌλ¨ μ½λκ° ν μ€νΈλκ³ λ°°ν¬λ λ€μμλ λ μ΄μ λ¨μ μ΄ νμνμ§ μλ€. κ·Έλ¬λ μ½λ μ€νμ΄ λΉ¨λΌμ§λλ‘ λ¨μ μ κΊΌλ²λ €μΌ νλ€. λ¨μ μ λλ²κΉ λκ΅¬μΌ λΏμ΄λ€.
μ¬λ¦¬κ²μ λ κ°μ§ λͺ λ°±νκ² νλ¦° κ°μ μ΄ μλ€. 첫째, ν μ€νΈκ° λͺ¨λ λ²κ·Έλ₯Ό λ°κ²¬νλ€λ κ°μ μ΄λ€. μ€μ λ‘λ νλ‘κ·Έλ¨μ΄ μ‘°κΈλ§ 볡μ‘ν΄μ Έλ μ¬λ¬λΆμ μ½λκ° κ±°μΉ μ μλ κ²½λ‘μ μ 체 μ‘°ν©μμ μ§κ·Ήν μ μ λΉμ¨μ‘°μ°¨λ ν μ€νΈνκΈ° νλ€λ€. λ€μ§Έ, λκ΄μ£Όμμλ€μ μ¬λ¬λΆμ νλ‘κ·Έλ¨μ΄ νν μΈμμμ λμκ°λ€λ μ¬μ€μ μλλ€. μ¬λ¬λΆμ 첫 λ²μ§Έ λ°©μ΄μ μ κ°λ₯ν μ€λ₯λ₯Ό λͺ¨λ κ²μ¬νλ κ²μ΄κ³ , κ·Έλ€μμ κ·Έλ¬κ³ λ λμΉ κ²μ μ‘μλ΄κΈ° μν΄ λ¨μ μ μ¬μ©νλ κ²μ΄λ€.
μ±λ₯ λ¬Έμ κ° μλ€ νλλΌλ μ λ§ λ¬Έμ κ° λλ λ¨μ λ¬Έλ§ λλλ‘ νμ. μμ λμ¨ μ λ ¬ μμκ° μ¬λ¬λΆ μ ν리μΌμ΄μ μ ν΅μ¬μ μΈ λΆλΆμ΄κ³ λ°λΌμ μλκ° λΉ¨λΌμΌ ν μ§λ λͺ¨λ₯Έλ€. κ²μ¬λ₯Ό μΆκ°νλ κ²μ κ·Έ λ°μ΄ν° μ 체λ₯Ό ν λ² λ μ²λ¦¬νλ κ²μ μλ―ΈνκΈ°μ μμ©νκΈ° νλ€ μλ μλ€. κ·Έ λ¨μ νλλ§ λ μ μκ² λ§λ€κ³ λλ¨Έμ§λ κ·Έλλ‘ λ¬λΌ.