π± ν¨μ€νΈμΊ νΌμ€, The RED : μνΌμ± μ΄μμ μν νμ₯μ± λμ μ± μν€ν μ² κ΅¬μΆ κ³΅λΆλ΄μ μ 리 : π FastCampus κ°μ’λ§ν¬
ν¨μ€νΈμΊ νΌμ€ κ°μμ½λμ Xcodegenμ μ μ©.
κ°λ°μκ° κ²ͺλ λ¬Έμ | μ¬μ©μκ° κ²ͺλ λ¬Έμ |
---|---|
- λΉλμκ° μ¦κ° - μ½λ μΆ©λ μ¦κ° - QA, λλ²κΉ μκ° μ¦κ° - λμ΄μ§ μλ νκ· λ²κ·Έ - κ°λ° μμ μκ° μ¦κ° - ... |
- μ‘ Startup μκ°μ¦κ° - κ³Όλν 리μμ€ μ¬μ© - μ± μ©λ μ¦κ° - λ²κ·Έ μ¦κ° - μ± μμ μ± νλ½ - ... |
- λͺ νν μν κ΅¬λΆ : κ°μ²΄/λͺ¨λμ νλμ μν λ§ μν, λ°μ΄ν°μ νλ¦μ μ½κ² λ°λΌκ° μ μμ
- λ³νμ μ μ° : μμ‘΄μ±μ decoupling λμ΄μκ³ , κ΅¬μ‘°κ° λ¨μνκΈ° λλ¬Έμ μ μ°
- ν μ€νΈκ° μ©μ΄ : μ λ ν μ€νΈκ° μ΄λ ΅λ€λ©΄ ꡬ쑰 κ°μ μ΄ νμνλ€λ μ νΈ, ν μ€νΈλ νμ§ κ΄λ¦¬μ μ μ©
Favor Object Composition Over Class Inheritance - Gang of Four, Design Patterns(1994)
κ°μ²΄ν©μ±μ νμ©, μμμ μ μ°νμ§ λͺ»ν¨ - μ½λκ°ν κ²°ν©μ ννμ
νλμ κ°μ²΄κ° λ무 λ§μκ²μ μκ³ μλ κ²½μ°κ° μ’μλλ λ§μ΄ μμ λ μκ³ λ μ μ μ 보λ₯Ό κ°μ§ κ°μ²΄λ₯Ό λ§λλκ² μ μ§λ³΄μ μΈ‘λ©΄μμ μ’μ
μΈλΆ λνλμ | λΉμ¦λμ€ λ‘μ§ | UI |
---|---|---|
λ°μ΄ν° μ μ₯ : λ©λͺ¨λ¦¬ μΊμ λ°μ΄λ리, λ°μ΄ν°λ² μ΄μ€, νμΌ λ± μλΉμ€ : λ€νΈμν¬, λΈλ£¨ν¬μ€, μμΉ μλΉμ€ |
λ΄λΉκ²μ΄μ
: νλ©΄μ μ΄λ ( present, dismiss, push, pop) μ½λλ€μ΄μ : κ°μ’ λ μ΄μ΄λ₯Ό μ‘°ν©ν΄ μ±μ΄ μ¬μ©μλ₯Ό μν΄ νλ μΌ |
λ·° : UIView, UIViewController νλ μ ν μ΄μ : μ΄λ―Έμ§ μμ ν°νΈ λ± UIλͺ¨λΈ λ³ν |
νλμ λ‘μ§μ λ¨μμλ Router, Interactor, Builder, View β νλμ λ¨μλ 리λΈλ μ΄λΌ λΆλ¦
- Builder : 리λΈλ μ κ°μ²΄λ€μ μμ± λΌμ°ν°λ₯Ό 리ν΄νλ μν
- Interactor : λ‘μ§μ΄ λ€μ΄κ°λ λΆλΆ, λλμν
- Router : 리λΈλ ν μΌμ λ§λ€κ³ λ·°λ 뷰컨νΈλ‘€λ¬ κ°μ λΌμ°ν μν μ μν.
- λ¨μΌ νκ² ( λͺ¨λ)
- κ°μ²΄ κ° λ¬΄λΆλ³ν μ°Έμ‘°
- μ½λ λ³κ²½μ μν₯ λ²μ νμ μ΄ νλ¦
- λΉλ μκ° μ¦κ°μ λ°λ₯Έ μμ°μ± μ ν
β μ λλ μ§ λͺ¨λμ κ³μΈ΅ν ν μ μμ, μμμ μλ λͺ¨λμ νμμ μλ λͺ¨λμ μ κ·Όν μ μμ§λ§, λ°λμ κ²½μ°λ μ κ·Όν μ μμ 체κ³μ μΈ μ€κ³λ₯Ό ν΅ν΄ λ‘μ§μ΄ λ¨λ°©ν₯μΌλ‘ νλ₯΄κ² λ§λλ κ²μ΄ μ€μ
λͺ¨λν ꡬ쑰μ μ₯μ
- κ΄μ¬μ¬κ° λΆλ¦¬λλ€.
- μ½λνμ μ΄ λΉ λ₯΄λ€
λͺ¨λνλ λͺ¨λμ λ§λλ νμκ° μ€μν κ²μ΄ μλλΌ κ°μ²΄λ λ‘μ§λ€μ μ°Έμ‘°κ΄κ³λ₯Ό μ 리νλκ²μ΄ ν΅μ¬
μμ‘΄μ±
- μ½λμ νΈμΆ(λ°νμ μμ‘΄μ±)
- μμ€μ½λ μμ‘΄μ±(μ»΄νμΌνμ μμ‘΄μ±)
Xcodeλ λ³λ ¬λ‘ λΉλλ₯Ό νκΈ° λλ¬Έμ μ±μ λΉλμκ°μ μ€μ΄κΈ° μν΄μλ λ³λͺ©λͺ¨λμ μ°Ύμμ κ·Έ λͺ¨λμ λΉλμκ°μ μ€μ¬μΌν¨
The power of OO comes from safe, convenient polymorphism with OO you have absolute control over the every single source code dependency in your system - Robert C. Martin, The Future Of Programming Languages
λ€νμ±μ μ΄μ©ν μμ‘΄μ± μμ
곡ν΅κΈ°λ₯ λͺ¨λμ΄λ λΉλμκ°μ΄ μ€λ 걸리λ λͺ¨λμ μμ€μ½λ μμ‘΄μ±μ λμ΄λ²λ¦ΌμΌλ‘μ λ΄ λͺ¨λμ λΉλμκ°μ μν₯λ°μ§ μκ² λ§λ€ μ μμ
νμ₯κ³Ό μ¬μ¬μ©
- μ κΈ°λ₯ κ°λ°, κΈ°μ‘΄ κΈ°λ₯ μμ μμ
- λͺ¨λλ³λ‘ λ 립μ μΈ μ¬μ¬μ©κ°λ₯
λ³λ ¬κ°λ°
- κ·λͺ¨κ° ν° νμκ² νμ
- κ³ λ¦½λ κ°λ°νκ²½
- λ―Έμμ± λͺ¨λμλ μμ‘΄ν μ μμ
μ μ§λ³΄μ
- λͺ¨λμ κ²½κ³κ° λͺ ν
- μμ , μν₯λ²μ νμ μ΄ μ¬μ
- κ°λ° μμ°μ± ν₯μ
- λΉλμκ° λ¨μΆ
ν μ€νΈ μ©μ΄μ±
- ν μ€νΈ λμμΌλ‘ μΉν
- λΉ λ₯Έ μλν ν μ€νΈ
- μ½λλ₯Ό μ΄ν΄νκΈ° μ΄λ €μμ§ (μ½λ νΈμΆμ νλ¦μ λ°λΌκ°κΈ° μ΄λ €μ)
- μμ±μ μ£Όμ
- λ©μλ μ£Όμ
- νλ‘νΌν° μ£Όμ
νλ©΄ νλ¦μ λ°λΌ μμνλ©΄μ μμ μκ² νμμλ λΆνμν μμ‘΄μ±μ λ€κ³ μμ΄μΌν¨, μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ Composition Rootλ₯Ό ν΅ν΄ νλ©΄μ νμν μμ‘΄μ±λ€μ Composition Rootκ° λ€κ³ μκ² νκ³ κ° νλ©΄μ μμ±νλ μν μ λ΄λΉνκ² νλ©΄ λ€μνλ©΄μ μμ‘΄μ±μ μ΄μ νλ©΄μ΄ λ€κ³ μμ§ μκ² ν μ μμ
Composition Root, ( Flow Controller / Coordinator )
Volatile Dependency | Stable Dependency | |
---|---|---|
μ£Όμ ν΄μΌνλ μμ‘΄μ± | μ£Όμ ν νμμλ μμ‘΄μ± | |
- μ¬μ©νκΈ°μ Runtimeμ μ΄κΈ°νκ° νμνκ² - μμ§ μ‘΄μ¬νμ§ μκ±°λ κ°λ°μ€μΈ κ² - λΉκ²°μ λ‘ μ λμ/μκ³ λ¦¬μ¦ |
- κ²°μ λ‘ μ λμ/μκ³ λ¦¬μ¦ - μ λ’°ν λ§ν νμνΈνμ± - Volatile μμ‘΄μ±μ μ μΈν λͺ¨λ κ² |
|
μ | λ°μ΄ν°λ² μ΄μ€, μνμ΄ κ°λ°νκ³ μλ κ²°μ λͺ¨λ, λλ€ν¨μ, Date() λ±λ±.. | Foundation, μ νΈμ± μ½λ, Formmater |