-
πλ Έλ§λ κ°λ°μ λΆν΄λ½ 'μ€μ©μ£Όμ νλ‘κ·Έλλ¨Έ'(1κΈ°) κ³Όμ #3π IT λμ 2022. 3. 21. 23:14
π ASSIGNMENT 3. 22.03.20 SUN - 03.21 MON
π μ€λ TIL 3μ€ μμ½
- DRY - λͺ¨λ μ§μμ μμ€ν λ΄μμ λ¨ ν λ²λ§, μ 맀νμ§ μκ³ , κΆμ μκ² ννλμ΄μΌ νλ€.
- μ§κ΅μ± - νλκ° λ°λμ΄λ λλ¨Έμ§μ μ΄λ€ μν₯μ μ£Όμ§ μλ κ². 'λ 립μ±', 'κ²°ν©λ μ€μ΄κΈ°'
- ν μ€νΈλ κ°λ°μ ν λΆλΆμ΄λ€.
π μ€λ μ½μ λ²μ
2μ₯. μ€μ©μ£Όμ μ κ·Όλ²
π μ± μμ κΈ°μ΅νκ³ μΆμ λ΄μ©μ μ¨λ³΄μΈμ
- ETC(Easier to Change) - "λ°κΎΈκΈ° λ μ½κ²"
- μ μ€κ³λ μ½λλ λ°λμΌλ‘μ¨ μ¬μ©νλ μ¬λμκ² λ§μΆ°μ ΈμΌ νλ€.
- μ¬λλ€μ λλΆλΆ μ μ§ λ³΄μλ λ²κ·Έλ₯Ό κ³ μΉκ³ κΈ°λ₯μ κ°μ νλ κ²μ μλ―ΈνκΈ° λλ¬Έμ, μ ν리μΌμ΄μ μ΄ μΆμλμμ λ λΉλ‘μ μ μ§ λ³΄μκ° μμλλ€κ³ λ―Ώλλ€. μ°λ¦¬λ μ΄λ€μ΄ νλ Έλ€κ³ μκ°νλ€. νλ‘κ·Έλλ¨Έλ λ μ μ§ λ³΄μ λͺ¨λμ μλ€. μ°λ¦¬μ μ΄ν΄λ λ λ§λ€ λ°λλ€. μ°λ¦¬κ° νλ‘μ νΈμ μ΄μ€ν΄ μλ λμμλ μλ‘μ΄ μꡬ μ¬νμ΄ λμ°©νκ³ κΈ°μ‘΄ μꡬ μ¬νμ μ§ννλ€. μ΄μ©λ©΄ νκ²½μ΄ λ³ν μλ μλ€. μ΄μ κ° λ¬΄μμ΄κ±΄, μ μ§ λ³΄μλ λ³κ°μ νλμ΄ μλλ©° μ 체 κ°λ° κ³Όμ μ μΌμμ μΈ λΆλΆμ΄λ€.
- DRY(Don't Repeat Yourself)
- λͺ¨λ μ§μμ μμ€ν λ΄μμ λ¨ ν λ²λ§, μ 맀νμ§ μκ³ , κΆμ μκ² ννλμ΄μΌ νλ€.
- DRYλ μ§μμ μ€λ³΅, μλμ μ€λ³΅μ λν κ²μ΄λ€. λκ°μ κ°λ μ λ€λ₯Έ κ³³ λκ΅°λ°μμ νννλ©΄ μ λλ€λ κ²μ΄λ€.
- μ½λλ λμΌνμ§λ§ λ ν¨μκ° νννλ μ§μμ λ€λ₯΄λ€. λ ν¨μλ κ°κ° μλ‘ λ€λ₯Έ κ²μ κ²μ¦νκ³ μμ§λ§, μ°μ°ν κ·μΉμ΄ κ°μ κ²λΏμ΄λ€. μ΄κ²μ μ°μ°μ΄μ§ μ€λ³΅μ΄ μλλ€.
- λͺ¨λμ΄ μλ£ κ΅¬μ‘°λ₯Ό λ ΈμΆνλ©΄ μΈμ λ λͺ¨λμ ꡬνκ³Ό κ·Έ μλ£ κ΅¬μ‘°λ₯Ό μ¬μ©νλ μ½λ μ¬μ΄μ κ²°ν©μ΄ μκΈ΄λ€. κ°λ₯νλ€λ©΄ μΈμ λ κ°μ²΄μ μμ±μ μ½κ³ μΈ λ μ κ·Όμ(accessor) ν¨μλ₯Ό μ¬μ©νλΌ. κ·Έλ¬λ©΄ λμ€μ κΈ°λ₯μ μΆκ°νκΈ° λ μ¬μμ§ κ²μ΄λ€.
- μ½λμμ μΈλΆ λ°μ΄ν°λ₯Ό κ³ μ λ ꡬ쑰(μλ₯Ό λ€μ΄ ꡬ쑰체λ ν΄λμ€μ μΈμ€ν΄μ€)λ‘ νννλ λμ , κ·Έλ₯ ν€-κ° λ°μ΄ν° ꡬ쑰μ λ°μ΄ λ£λ κ²μ΄λ€. μ΄ λ°©μμ μΈ λλ λ°μ΄ν°λ₯Ό ν κ²Ή λ κ°μ κ²μ κΆμ₯νλ€.
- μΌμμ μΌλ‘λ μ½λ 리뷰λ₯Ό ν΅ν΄μλ λ€λ₯Έ μ¬λμ μμ€ μ½λμ λ¬Έμλ₯Ό λ°λμ μ½μ΄λΌ. λ€λ₯Έ μ¬λμ κ²μ κΈ°μ거리λ κ² μλκ³ , κ±°κΈ°μ λ°°μ°λ κ²μ΄λ€. κ·Έλ¦¬κ³ κΈ°μ΅νλΌ. μ κ·Όμ μνΈμ μ΄λ€. λ€λ₯Έ μ¬λμ΄ μ¬λ¬λΆμ μ½λλ₯Ό λ€μ¬λ€λ³΄κ³ 건λλ¦°λ€κ³ ν΄μ κΈ°λΆ λλΉ νμ§ λ§ μΌμ΄λ€.
- μ§κ΅μ±(orthogonality)
- κΈ°νν : κ·Έλνμ λ μ§μ μ΄ μ§κ°μΌλ‘ λ§λλ κ²½μ° μ§κ΅νλ€κ³ λ§ν¨. μ΄ λ λ κ°μ μ μ λ 립μ (independent)
- μ»΄ν¨ν° κ³Όν : μΌμ’ μ λ 립μ±, κ²°ν©λ μ€μ΄κΈ°(decoupling)λ₯Ό μλ―Έ. νλκ° λ°λμ΄λ λλ¨Έμ§μ μ΄λ€ μν₯λ μ£Όμ§ μμΌλ©΄ μλ‘ μ§κ΅νλ€κ³ ν μ μμ.
- λ μ»΄ν¬λνΈκ° μ§κ΅μ μ΄λΌλ©΄ κ²°ν©νμ λ κ²°κ³Όλ¬Όμ M x Nκ°μ§ μΌμ΄λ€. λ κ°μ μ»΄ν¬λνΈκ° μ§κ΅μ μ΄μ§ μλ€λ©΄ κ²ΉμΉλ λΆλΆμ΄ μμν κ³ , κ²°κ³Όλ¬Όμ΄ ν μ μλ μΌμ κ·Έλ³΄λ€ μ μ κ²μ΄λ€. μ§κ΅μ μΈ μ»΄ν¬λνΈλ€μ κ²°ν©ν¨μΌλ‘μ¨ λ¨μ λ Έλ ₯λΉ λ λ§μ κΈ°λ₯μ μ»μ μ μλ€.
- 'μ§κ΅μ 'μ΄λΌλ κ°λ μ μ€λͺ ν λ λͺ¨λμ, μ»΄ν¬λνΈ κΈ°λ°, κ³μΈ΅(layer) κ°μ μ©μ΄λ₯Ό μ¬μ©νκΈ°λ νλ€. μμ€ν μ μλ‘ νλ ₯νλ λͺ¨λμ μ§ν©μΌλ‘ ꡬμ±λμ΄μΌ νκ³ , κ° λͺ¨λμ λ€λ₯Έ λΆλΆκ³Ό λ 립μ μΈ κΈ°λ₯μ ꡬνν΄μΌ νλ€. κ³μΈ΅ ꡬ쑰λ μ§κ΅μ μμ€ν μ μ€κ³νλ κ°λ ₯ν λ°©λ²μ΄λ€.
- λ§μ½ κ°μ²΄λ₯Ό μ μ₯μμ μ μ₯νλ λ°©μμ΄ ν¬λͺ νλ€λ©΄ μ§κ΅μ μ΄λ€. νμ§λ§ νΉλ³ν λ°©μμΌλ‘ κ°μ²΄λ₯Ό μμ±νκ³ μ κ·Όν΄μΌ νλ€λ©΄ κ·Έλ μ§ μλ€.
- μμ§(cohesion)
- μ»΄ν¬λνΈλ€μ΄ κ°κΈ° 격리(isolate)λμ΄ μμΌλ©΄ μ΄λ νλλ₯Ό λ°κΏ λ λλ¨Έμ§ κ²λ€μ κ±±μ νμ§ μμλ λλ€.
- μμ°μ± ν₯μ, 리μ€ν¬ κ°μ
- "μμ μ νμΌλ‘ μ μ΄ν μ μλ μμ±μ μμ‘΄νμ§ λ§λΌ."
- κΈ°νκ° μμ λλ§λ€ μ½λμ ꡬ쑰μ μ§κ΅μ±μ κ°μ νκΈ° μν΄ λ Έλ ₯νλΌ. μ΄λ° κ³Όμ μ '리ν©ν°λ§(refactoring)'μ΄λΌκ³ λΆλ₯Έλ€.
- λ¨μ ν μ€νΈλ₯Ό μμ±νλ νμ μμ²΄κ° μ§κ΅μ±μ ν μ€νΈν΄ λ³Ό μ μλ κΈ°νλ€. λ¨μ ν μ€νΈλ₯Ό μν΄ μ΄λ€ μμ μ΄ νμνκ±°λ μλΉ λΆλΆμ λΆλ¬μμΌ νλ€λ©΄ λͺ¨λκ³Ό λλ¨Έλ μμ€ν μ¬μ΄μ κ²°ν©λλ₯Ό μΆ©λΆν μ€μ΄μ§ λͺ»νλ€λ λ»μ΄λ€.
- ν μ€νΈλ₯Ό λ§μΉ λ€ μ½λλ₯Ό λ³ν©ν λ λ²κ·Έ μμ μ λν νκ·Έλ₯Ό λΆμ¬λΌ. μ΄λ κ² νλ©΄ λ²κ·Έ μμ λ§λ€ μμ ν μμ€ νμΌ κ°μλ₯Ό μμ§νμ¬ κ·Έ κ²½ν₯μ λΆμν μ λ¨μ 리ν¬νΈλ₯Ό λ§λ€ μ μμ κ²μ΄λ€.
- "λΉμ μ΄ κ°μ§ μκ°μ΄ λ± νλλ°μ μλ€λ©΄, κ·Έκ²λ§νΌ μνν κ²μ μλ€." - μλ° μ€κ·μ€νΈ μ€λ₯΄ν°μ
- λ°μ΄ν°λ² μ΄μ€λΌλ κ°λ μ μ¬λ°λ₯΄κ² μΆμννμ¬ μμμ±μ νλμ μλΉμ€λ‘ μ 곡νλλ‘ λ§λ€μλ€λ©΄ λ¬λ¦¬λ λμ€μ λ§μ κ°μν μ μλ μ μ°μ±μ΄ μκΈΈ κ²μ΄λ€.
- μκ΄ν κ°λ°
- μμ€ν μ μ μνλ μ€μν μꡬ μ¬νμ μ°ΎμλΌ. μλ¬Έμ΄ λλ λΆλΆμ΄λ κ°μ₯ μνμ΄ μ»€ 보μ΄λ κ³³μ μ°ΎμλΌ. μ΄λ° λΆλΆμ μ½λλ₯Ό κ°μ₯ λ¨Όμ μμ±νλλ‘ κ°λ° μ°μ μμλ₯Ό μ νλΌ.
- κΈ°λ₯μ λ³λ‘ μμ§λ§ μκ²°λ μ½λ, μ΅μ’ μμ€ν 골격 μ€ μΌλΆκ° λ¨
- νλ‘ν νμ
- μ΅μ’ μμ€ν μ μ΄λ€ μΈ‘λ©΄μ νμ¬ν΄ 보λ κ²μ΄ λͺ©ν
- νλ‘ν νμ΄νμ΄ λλλ©΄ ν΄λΉ μ½λλ νκΈ°, μκ΄νμ λ°μ¬νκΈ° μ μ λ¨Όμ μννλ μ μ°°μ΄λ μ 보 μμ§κ³Ό κ°μ κ²
- μΈλΆ μ¬νμ ν¬κΈ°ν μ μλ νκ²½μ μ²ν΄ μλ€λ©΄ μ§μ§λ‘ νλ‘ν νμ μ λ§λ€κ³ μλ κ² λ§λμ§ μλ¬Έν΄ λ³΄λΌ. μλ§λ μ΄λ° κ²½μ°μλ μκ΄ν λ°©μμ κ°λ°μ΄ λ μ μ ν κ²μ΄λ€.
π¬ μ€λ μκ°μ? λ μ€λ₯΄λ μκ°μ κ°λ¨νκ² μ μ΄λ³΄μΈμ
2μ₯μ μ½μΌλ©΄μ μ²μλΆν° λκΉμ§ κ³μ λ μ€λ₯΄λ μκ°μ λλ μμ§ μ€μ€λ‘λ₯Ό κ°λ°μλΌκ³ μΉνλ©΄ μλκ² λ€λ κ²μ΄μλ€. ν΄μ¬ μ§μ κΉμ§ λ³΄κ³ κ°λ°νλ μ½λλ€μ΄ λ무λ λμ‘νκ³ κ·Έ μ½λλ€μ λ λμ λ°©ν₯μΌλ‘ λ°κΏλ³Ό μκ°μ‘°μ°¨ νμ§ μμλ λλ... κ°λ°μκ° μλλ€π 첫 μ·¨μ μ μ μ΄ μ± μ μ½μλλΌλ©΄ μ€μ€λ‘μκ² μ‘°κΈ λ λ³λ³ν κ°λ°μκ° λμ§ μμμκΉ μ½κ°μ ννκ° κΉλ λ€.
μ μ²κΈ° 곡λΆνλ©΄μ μ λ§ μ 맀νλ κ°λ λ€μ΄ κ²°ν©λ, μμ§λμλλ° κ·Έ κ°λ λ€μ μ¬κΈ°μ λ€μ λ³΄κ² λκ³ μ’ λ μμΈν μ€λͺ μ μ½μΌλ λνν μ€λ©°λλ λλμ΄λ€.
μμ§ μ± μ μ΄λ°λΆμ΄κΈ΄ νμ§λ§ λ€ μ½κ³ λλ©΄ λ΄ κ°λ°μΈμμ λΆκ·Ήμ±μ΄ μ겨μμ κ² κ°λ€. μ΄ μ³μ λ°©ν₯μ κΎΈμ€ν μ°κ΅¬νκ³ λ°λΌκ°κΈ°!
π κΆκΈν λ΄μ©μ΄ μκ±°λ, μ μ΄ν΄λμ§ μλ λ΄μ©μ΄ μλ€λ©΄ μ μ΄λ³΄μΈμ
- νμ€μΌ(Haskell) μ¬κ³ λ°©μ - https://namu.wiki/w/Haskell μ°Έκ³
'π IT λμ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ