Clean Code - 3
π λ μνκΈ°
γν΄λ¦°μ½λγ 9 ~ 12μ₯ λ μ νκΈ°
- 9μ₯. λ¨μ ν μ€νΈ
- 10μ₯. ν΄λμ€
- 11μ₯. μμ€ν
- 12μ₯. μ°½λ°μ±
1μ£ΌμΌμ 4μ₯μ© μ½κΈ°κ° λͺ©νμ΄λ©° μ½μ νκΈ°λ₯Ό λΈλ‘κ·Έμ νκΈ°λ‘ μ 리κΉμ§ ν΄λ³΄λ €νλ€.
μ΄λ²μ£Όλ 9μ₯ γλ¨μ ν μ€νΈγ ~ 12μ₯ γμ°½λ°μ±γ κΉμ§ μ½μ νκΈ°λ₯Ό κ°λ΅ν λ¨κ²¨λ³΄μλ€.
9. λ¨μ ν μ€νΈ
μ¬μ€ λλ ν
μ€νΈ μ½λλ₯Ό μ§λ³Έ κ²½νμ΄ λ³λ‘ μλ€.
μ λλ‘ λ°°μ°κ³ μΆμ§λ§ TDDλ μμ§κΉμ§ λμκ² ννμ§λ‘ λκ»΄μ§λ κ°λ°λ‘ μ€ νλμ΄λ€.
μ΄λ² μ₯μμλ ν μ€νΈ μ½λμ μ€μ μ±μ κ°μ‘°νλ©° TDD λ²μΉμ μ€λͺ νλ€. κ·Έλ¦¬κ³ TDDμ κ°μ₯ μ€μν μΈκ°μ§ λ²μΉμ λ€μκ³Ό κ°λ€ κ°μ‘°νλ€.
-
βμ€ν¨νλ λ¨μ ν μ€νΈλ₯Ό μμ±ν λκΉμ§ μ€μ μ½λλ₯Ό μμ±νμ§ μλλ€.β
-
βμ»΄νμΌμ μ€ν¨νμ§ μμΌλ©΄μ μ€νμ΄ μ€ν¨νλ μ λλ‘λ§ λ¨μ ν μ€νΈλ₯Ό μμ±νλ€.β
-
βνμ¬ μ€ν¨νλ ν μ€νΈλ₯Ό ν΅κ³Όν μ λλ‘λ§ μ€μ μ½λλ₯Ό μμ±νλ€.β
μ΄λ²μ₯μ μ½μ΄λ³΄λ βν μ€νΈβ λΌλ κ±Έ λ§μ°ν μ΄λ ΅κ² λκ»΄μλ μ μ λν΄ λ²½μ΄ μ‘°κΈ νλ¬Όμ΄μ§ λλμ λ°μλ€.
- βμ€μ μ½λκ° νμ₯λκ±°λ λ³κ²½λλ©΄ λΉμ°ν ν μ€νΈ μ½λλ λ°λμ΄μΌνλ μΌμ΄ λλ°°κ° λλ κ² μλκ°..?β
μ μκ°μ΄ λ΄κ° λ§μ°ν μκ°νλ βTDDλ ννμ§λ€.β λΌλ κ²°λ‘ μ΄μλ€.
κ·Έλμ μΆ©λΆν ν μ€νΈ μμ΄ μ½λλ₯Ό μΆμνκ³ , κ·Έ μ± μμ βνμλ€ νΉμ μ¬μ©μλ€μκ² μ κ°νκ³ μμλκ² μλκΉ?β λ μκ°μ λ€μνκ² λμλ€.
μ΄ μ₯μ μ½κ³ κΈ°μ΅μ λ¨λ 문ꡬλ₯Ό κΌ½μλ©΄ μλμ λ¬Έμ₯μ κΌ½μ κ² κ°λ€.
"ν μ€νΈ μΌμ΄μ€κ° μλ€λ©΄ λͺ¨λ λ³κ²½μ΄ μ μ μ μΈ λ²κ·Έλ€."
10. ν΄λμ€
ν¨μλΏλ§ μλλΌ ν΄λμ€μλ ν΄λΉ μμΉμ μ μ©λλ€.
"λ¨μΌ μ± μ μμΉ"
ν΄λμ€ νΉμ ν¨μλ λͺ¨λμ λ³κ²½ν΄μΌνλ€λ©΄ κ·Έ μ΄μ λ λ¨ νλμ¬μΌ νλ€λ μμΉμ΄λ€.
νμ ν΄λμ€λ ν¨μλ μκ² μͺΌκ°μ΄μ ΈμΌ νλ€. λ±λ± βλͺ¨λνβμ λν μ΄μΌκΈ°λ λ§μ΄ λ€μλ€.
κ·Έ μκ²λΌλ κΈ°μ€μ΄ λλ μμλ μ½λμ κΈΈμ΄κ° μλ, βμ± μβ μ΄λΌλ κ±Έ μ΄λ² μ₯μμλ κ°μ‘°νλ€.
λꡬ μμλ₯Ό λ μ¬λ €λ³΄μ, νκ°μ§μ λꡬλ νκ°μ§μ μ± μμ κ°κ³ νκ°μ§μ μΌμ μ ν΄λΈλ€.
3μ₯ ν¨μμμ λ€λ£¬ λ΄μ©κ³Ό ν¬κ² λ€λ₯΄μ§ μλ€ μκ°νλ€. ν΄λμ€λ λ§μ°¬κ°μ§λ‘ 체κ³μ μΈ μ 리 μμ΄ μ°μΈλ€λ©΄ λ²κ·Έκ° μ¨μ΄λ€κΈ° μ’μ μ λ°μ μλ€.
ν° ν΄λμ€λ§μΌλ‘ μ΄λ€μ§ μμ€ν 보λ€λ μμ ν΄λμ€ μ¬λΏμΌλ‘ μ΄λ€μ§ μμ€ν μ΄ λ λ°λμ§νλ€.
11. μμ€ν
λμλ₯Ό κ³ννλ©΄ νμ λ³λ‘ κ° λΆμλ₯Ό λλκ³ λΆμλ§λ€ λΉμ·ν μμ€μ μΌμ λ΄λΉνλ€.
μννΈμ¨μ΄λ λ§μ°¬κ°μ§λ€. μ μ ν μΆμνμ λͺ¨λνλ‘ κΈ°λ₯μ μ± μ λ³λ‘ λλκ³ κ΄λ¦¬νλ€.
"볡μ‘μ±μ μ£½μμ΄λ€. κ°λ°μμκ²μ μκΈ°λ₯Ό μμκ°λ©°, μ νμ κ³ννκ³ μ μνκ³ ν μ€νΈνκΈ° μ΄λ ΅κ² λ§λ λ€."
μ΄ μ₯μμλ μ μκ³Ό μ¬μ©μ λΆλ¦¬ν΄μΌνλ€λΌλ©° κ°μ‘°λ₯Ό νλ€.
건물μ μλ‘ λ€λ©΄, 건μΆκ³Όμ μ€ κΈ°μ€κΈ°μ μΉκ°κΈ°κ° νμνμ§λ§ μ곡 μμ μ΄νμλ νμκ° μμ΄μ§λ―μ΄ μμ© νλ‘κ·Έλ¨ κ°λ°μλ μ΄μ κ°μ μ€κ³ κΈ°λ²μΈ βκ΄μ¬μ¬β λΆλ¦¬μ λν΄ κ°μ‘°νλ€.
κ±΄μΆ μ€κ³ κΈ°λ²μ²λΌ μμ€ν λν μμ λ¨κ³λΆν° κ΄μ¬μ¬λ₯Ό λΆλ¦¬νμ¬ μ€κ³νλ κ²μ λν μ€μμ±μ μΈκΈνλ μ₯μ΄μλ€.
μ΄λ² 11μ₯μ μ΄λ €μ΄ κ°λ
(ν‘λ¨ κ΄μ¬μ¬, μμμ±, κ΄μ μ§ν₯ νλ‘κ·Έλλ°(AOP) λ±λ±..) μ΄ λ무 λ§μ΄ λμμ.. κ°μ²΄μ§ν₯ κ°λ
μ λν΄ μ‘°κΈ λ 곡λΆν λ€ λ€μ μ½μ΄λ΄μΌκ² λ€.
μ΄ μ₯μ κ²°λ‘ μ μ± μ λ°©ν₯μ±κ³Ό μΌμΉνλ€.
"μμ€ν μμ κΉ¨λν΄μΌ νλ€."
κΉ¨λνμ§ λͺ»ν μν€ν μ³λ λ Όλ¦¬λ₯Ό ν리며 μ΄λ μ ν νμ§μ νλ½μΌλ‘ μ΄μ΄μ§λ€.
νμ§μ΄ λ¨μ΄μ§λ μ½λμλ μμ λ²κ·Έκ° μ¨μ΄λ€κΈ° μ¬μμ§κ³ μ€ν 리λ₯Ό ꡬννκΈ° μ΄λ €μμ§λ€λ₯Ό κ°μ‘°νλ€.
12. μ°½λ°μ±
μ¬μ€ μ΄ λ¨μ΄λ₯Ό μ±
μ μ½μΌλ©° μ²μ μ νλ€. (μ°½λ°?..)
μν€λ°±κ³Όμλ μ΄ λ¨μ΄λ₯Ό λ€μκ³Ό κ°μ΄ μ μνλ€.
μ°½λ°(ε΅ηΌ)λλ λ μ€λ¦ νμμ νμ κ³μΈ΅(κ΅¬μ± μμ)μλ μλ νΉμ±μ΄λ νλμ΄ μμ κ³μΈ΅(μ 체 ꡬ쑰)μμ μλ°μ μΌλ‘ λμ°ν μΆννλ νμμ΄λ€. λν λΆμμ μμλλ νΉμ±μ μ°½λ°μ±(μμ΄: emergent property) λλ μ΄λ¨Έμ μ€(μμ΄: emergence)λΌκ³ λ λΆλ₯Έλ€. μκΈ°μ‘°μ§ν νμ, 볡μ‘κ³ κ³Όνκ³Ό κ΄λ ¨μ΄ κΉλ€.
μ΄ μ₯μμλ μ°½λ°μ μ€κ³μ μ€μμ±μ κ°μ‘°νλ€.
βμ°½λ°μ μ€κ³β λΌλ λ¬Έμ₯μ λ¨μ΄μ λ»μ μ λͺ©ν΄μ ν΄μνλ©΄ λ€μκ³Ό κ°λ€.
"μ°©μ€νκ² κ·μΉ(νμ κ³μΈ΅)μ λ°λ₯΄κΈ°λ§ νλ©΄ μ°μν μ€κ³(μμ κ³μΈ΅)κ° λμ€λ μ€κ³ λ°©μ."
μ¦, μ΄ μ₯μμλ μ λ°λ₯΄κΈ°λ§νλ©΄ μ°μν μ€κ³λ₯Ό 보μ₯νλ κ·μΉ νΉμ μμΉμ΄λ 무μμΈμ§ μ€λͺ νλ μ₯μ΄λ€.
μ΄λ² μ₯μμ κΌ½μ κ·μΉμ λ€μκ³Ό κ°λ€. (μ€μλ μμ΄λ€.)
-
βλͺ¨λ ν μ€νΈλ₯Ό μ€ννλ€.β
-
βμ€λ³΅μ μμ€λ€.β
-
βνλ‘κ·Έλλ¨Έ μλλ₯Ό νννλ€.β
-
βν΄λμ€μ λ©μλ μλ₯Ό μ΅μλ‘ μ€μΈλ€.β
μ΄λ―Έ μ΄μ μ±ν°λ€μμ λ무 κ°μ‘°νλ λ΄μ©λ€μ΄λ€.
μ΄ μ±
μ μ½μΌλ©΄μ λλΌμ§λ§ νκ²°κ°μ λ°©ν₯μ μ μνκ³ κ°μ λ΄μ©μ μ§μμ μΌλ‘ κ°μ‘°νλ€. (κ·Έλ§νΌ μ€μνλ¨κ²μ΄μ§!)
λΆλ‘μ μ μΈνλ©΄ 17μ₯κΉμ§ μ‘΄μ¬νλ μ΄μ± μμ λ§νκ³ μνλ λ°©ν₯μ μ΄μ μΌ μ΄λ ΄νμ΄ λ³΄μ΄λλ―νλ€.
λ€μνλ² λ³΅κΈ°νλ λ§μμΌλ‘ μ½μλ μ±ν°μλ€.