κ°λ μ±
μ μ½λ€λ³΄λ©΄ 'SOLIDλ κ°μ²΄μ§ν₯ μμΉμΌ λΏλ§ μλλΌ λ λμ νλ‘κ·Έλλ° μμΉμ΄λ€.'λΌλ λ§μ΄ κ½€ μμ£Ό λμ¨λ€. SOLIDμ λν΄ μ€λͺ
μ νλ λΆλΆμ΄ μμ λλ©΄ νμ λμ€λ λ―νλ€. μ΄ λ§μ νλΉν κΉ? μ΄ μ£Όμ λ κ½€ ν₯λ―Έλ‘κ³ , μκ²¬μ΄ κ°λ¦΄ μ μλ€. κ²°λ‘ λΆν° λ§νμλ©΄:
- SOLIDλ μλ κ°μ²΄μ§ν₯(Object-Oriented Programming, OOP)μ μ€κ³ μμΉμΌλ‘ μΆλ°νμ§λ§, λ λμ λ²μμμ ν΄μλ μ μλ€.
π 1. SOLIDμ κΈ°μκ³Ό μλ
- SOLID μμΉμ Robert C. Martin(μμ μ¨ κ°λ°μ, Uncle Bob)μ΄ μ²μ μ μν κ°μ²΄μ§ν₯ μ€κ³ μμΉμ΄λ€.
- μ£Όλ‘ ν΄λμ€, κ°μ²΄, μμ, λ€νμ± λ± κ°μ²΄μ§ν₯μ ν΅μ¬ κ°λ
κ³Ό λ°μ ν κ΄λ ¨μ΄ μλ€.
- μ΄κΈ° λͺ©μ μ κ°μ²΄μ§ν₯ μΈμ΄(Java, C++, C# λ±)μμ μ μ§λ³΄μ κ°λ₯νκ³ νμ₯ κ°λ₯ν μ€κ³λ₯Ό λκΈ° μν΄ λ±μ₯νλ€.
π 2. SOLIDλ κ°μ²΄μ§ν₯μ κ΅νλμ§ μλλ€?
μ΅κ·Όμλ λ§μ κ°λ°μλ€μ΄ SOLID μμΉμ λ λμ νλ‘κ·Έλλ° ν¨λ¬λ€μμ μ μ©νλ€. κ·Έ μ΄μ λ:
-
νλ‘κ·Έλλ° λ©ν μμΉ
- SOLIDμ μμΉλ€μ κ°μ²΄μ§ν₯ μΈμ΄λΏ μλλΌ, ν¨μν μΈμ΄, μ μ°¨μ μΈμ΄ λ± λ€μν ν¨λ¬λ€μμλ μμΉμ μΌλ‘ μ μ©λ μ μλ€.
- μλ₯Ό λ€μ΄, "λ¨μΌ μ±
μ μμΉ(SRP)"μ΄λ "κ°λ°©-νμ μμΉ(OCP)"μ ν¨μν μΈμ΄λ μ€ν¬λ¦½νΈ μΈμ΄μμλ μΆ©λΆν μλ―Έκ° μλ€.
-
μμ‘΄μ± κ΄λ¦¬μ μ€κ³ ν¨ν΄μ μ€μμ±
- SOLIDλ μΈμ΄μ νΉμ§λ³΄λ€ μμ€ν
μ€κ³μ μ½λ κ΄λ¦¬μ ν΅μ¬ μμΉμ λ€λ£¬λ€.
- μ¦, κ°μ²΄μ§ν₯ μΈμ΄κ° μλλλΌλ
λͺ¨λν
, νμ₯μ±
, μ μ§λ³΄μμ±
μ΄λΌλ ν€μλλ μ΄λ€ μΈμ΄μμλ μ€μνλ€.
-
νλ μννΈμ¨μ΄μ 볡μ‘μ±
- λ§μ΄ν¬λ‘μλΉμ€ μν€ν
μ², ν¨μν νλ‘κ·Έλλ° ν¨ν΄, λλ©μΈ μ£Όλ μ€κ³(DDD) λ±μμλ SOLID μμΉμ΄ μμ°μ€λ½κ² λ
Ήμλ€μ΄ μλ€.
π 3. μ견 μ°¨μ΄μ μ΄μ
- μμΉμ κΈ°μκ³Ό μ μ© λ²μ: SOLIDκ° κ°μ²΄μ§ν₯μμ μΆλ°νμ§λ§, κ·Έ μμΉ μ체λ νΉμ μΈμ΄λ ν¨λ¬λ€μμλ§ κ΅νλμ§ μλλ€.
- κ΄μ μ°¨μ΄: μ΄λ€ μ¬λμ "SOLIDλ κ°μ²΄μ§ν₯μ ν΅μ¬ μμΉ"μ΄λΌκ³ μκ°νκ³ , λ€λ₯Έ μ¬λμ "νλ‘κ·Έλλ° μ λ°μ μ€κ³ μμΉ"μ΄λΌκ³ λ³Έλ€.
- μ€μ μ μ© μ¬λ‘: ν¨μν νλ‘κ·Έλλ°(FP)μμλ SOLID μμΉμ μ μ©νλ κ²½μ°κ° λ§λ€.
π€ 4. κ²°λ‘
-
μλ°νκ² λ§νλ©΄:
- SOLIDλ κ°μ²΄μ§ν₯ μ€κ³ μμΉμΌλ‘ μΆλ°νμΌλ©°, κ°μ²΄μ§ν₯ ν¨λ¬λ€μμ κ°μ₯ μ μ΄μΈλ¦°λ€.
-
λ λκ² λ³΄λ©΄:
- SOLID μμΉμ μννΈμ¨μ΄ μ€κ³ μΌλ° μμΉμΌλ‘ νμ₯ κ°λ₯νλ©°, λ€μν νλ‘κ·Έλλ° ν¨λ¬λ€μμμ μ μ©λ μ μλ€.
π λΉμ μ΄ μ½μ μ±
μ ν΄μμ μ ν¨νκ°?
κ·Έ ν΄μμ νλ¦° λ§μ΄ μλλ€!
- ν΄λΉ μ μλ SOLID μμΉμ΄ κ°μ²΄μ§ν₯μ λμ΄ λ λμ νλ‘κ·Έλλ° λ©ν μμΉμΌλ‘ μ μ©λ μ μλ€κ³ μ£Όμ₯ν κ²μ΄λ€.
- μ΄λ° ν΄μμ μ μ λ λ§μ κ°λ°μμ μ λ¬Έκ°λ€μ΄ λμνκ³ μλ€.
β
μ€μ©μ λ΅λ³:
- μ΄λ‘ μ μΌλ‘: SOLIDλ κ°μ²΄μ§ν₯ μ€κ³ μμΉμ΄λ€.
- μ€λ¬΄μ μΌλ‘: SOLIDλ λͺ¨λ νλ‘κ·Έλλ° μ€κ³ μμΉμ μ μ©ν μ μλ€.