SOLID
μ μ
κ°μ²΄μ§ν₯μ μ€κ³μ νμ§μ λμ΄κΈ° μν 5κ°μ§μ μ리λ₯Ό λ§νλ€. μ ννλ, κ° μ리μ μ κΈμλ₯Ό λ°μ μ΄μ΄ λΆμ¬ SOLIDμ΄λ€.
5κ°μ§ μ리λ λ€μκ³Ό κ°λ€.
S
ingle Responsibility Principle (SRP, λ¨μΌ μ± μ μμΉ)O
pen Closed Principle (OCP, κ°λ°© νμ μμΉ)L
iskov substitution principle (LSP, 리μ€μ½ν κ΅μ²΄ μμΉ)I
nterface segregation principle (ISP, μΈν°νμ΄μ€ 격리 μμΉ)D
ependency inversion principle (DIP, μμ‘΄κ΄κ³ μμ μμΉ)
λͺ©ν
μμ λ§νλ― SOLID μμΉμ μ μ©ν¨μΌλ‘μ¨ μ»κ³ μ νλ μ΄μ μ λμ μ€κ³λ₯Ό μ΅λν μ κ±°νλ κ²μ΄λ€.
λμ μ€κ³μλ λ€μμ μμλ€μ΄ μλ€.
κ²½μ§μ±(Shotgun) - μΌλΆλ₯Ό κ³ μΉλ©΄ λ€λ₯Έ λΆλΆμμλ κ³ μΉ κ²μ΄ μκΉ
λΆμμ§κΈ° μ¬μ (Fragile) - μΌλΆλ₯Ό κ³ μΉλ©΄ μ 체 νλ‘κ·Έλ¨μ μλμ΄ λ©μΆ€
λΆλμ± - μ¬μ¬μ©μ΄ μ΄λ €μ
λλν¨ - long cycleμ μμ ν΄ ν λ² κ³ μΉλλ° λ무 μ€λ μκ°μ΄ κ±Έλ¦Ό
볡μ‘ν¨
λΆνμν λ°λ³΅
λΆν¬λͺ ν μλ
Single Responsibility Principle (SRP, λ¨μΌ μ±
μ μμΉ)
μ μ
ν ν΄λμ€μλ ν κ°μ§ μ± μλ§ λΆμ¬ν΄μΌ νλ€λ μμΉ
리ν©ν λ§ κ³Όμ μμ SRPλ₯Ό μ μ©νκ³ μ νλ€λ©΄ κ²°ν©λ μ± μμ κ°μ§ ν΄λμ€λ λΆλ¦¬νμ¬ λ³λμ ν΄λμ€λ‘ λ§λ€μ΄μΌ νλ€.
μ₯μ
μ± μμ΄ λΆλ¦¬λλ―λ‘ ν λΆλΆμ λ³νκ° λ€λ₯Έ λΆλΆμ μν₯μ λ―ΈμΉμ§ μλλ€.
Open Closed Principle (OCP, κ°λ°© νμ μμΉ)
μ μ
μννΈμ¨μ΄μ ꡬμ±μμλ νμ₯μλ μ΄λ € μμ§λ§ λ³κ²½μλ λ«ν μμ΄μΌ νλ€λ μμΉ
μ¦, κΈ°μ‘΄μ κ΅¬μ± μμλ μ½κ² νμ₯νμ¬ μ¬μ¬μ©ν μ μμΌλ μ΅λν μμ μ΄ λ°μνμ§ μμμΌ νλ€λ κ²μ΄λ€.
μ₯μ
μ¬μ¬μ©μ±μ μ’μμ§κ³ , μμ μ λλ λΉμ©μ μ€μ΄λ λ€.
Liskov substitution principle (LSP, 리μ€μ½ν κ΅μ²΄ μμΉ)
μ μ
κΈ°λ³Έ ν΄λμ€(super class)λ νμ ν΄λμ€(sub class)μ λν΄ μ νμκ° μμ΄μΌ νλ€λ μμΉ
λν, νμ ν΄λμ€λ νμ κΈ°λ³Έ ν΄λμ€λ‘ κ΅μ²΄ν μ μμ΄μΌ νλ€.
μ΄λ₯Ό μν΄ μλΈν΄λμ€λ μνΌν΄λμ€κ° λ°λ 맀κ°λ³μλ₯Ό λͺ¨λ λ°μμΌ νκ³ , μνΌν΄λμ€κ° μ¬μ©λ μ μλ κ³³μμ μλΈν΄λμ€λ μ¬μ©λ μ μμ΄μΌ νλ€.
μ₯μ
μλΈν΄λμ€μ λ³κ²½ μ¬νμ΄ μκ²Όμ λ λ€λ₯Έ ν΄λμ€μ μν₯μ΄ κ°μ§ μλλ€.
Interface segregation principle (ISP, μΈν°νμ΄μ€ 격리 μμΉ)
μ μ
κ° ν΄λμ€λ μμ μ΄ μ¬μ©νμ§ μλ λ©μλμ μμ‘΄ κ΄κ³κ° μ겨μλ μ λλ€λ μμΉ
ν ν΄λμ€μ λ€λ₯Έ μ¬λ¬ ν΄λμ€λ₯Ό μν κΈ°λ₯μ ꡬνν μ μ΄λ¬ν λ¬Έμ κ° μκΈ΄λ€.
μ΄λ¬ν λΆνμν κ²°ν©μ ν ν΄λμ€μ λ³κ²½μ¬νμ΄ μκ²Όμ λ λ€λ₯Έ ν΄λμ€λ λ€μ μ»΄νμΌνκ² λ§λ λ€.
μ΄λ¬ν λ¬Έμ λ₯Ό μλ°©νκΈ° μν΄ λΆνμν μμ‘΄ κ΄κ³λ₯Ό λ§λλ ν΄λμ€κ° μκΈΈ μ λ³λμ μΈν°νμ΄μ€λ‘ λΆλ¦¬ν λ€ μ΄λ₯Ό λͺ¨λ ꡬννλ ν΄λμ€λ₯Ό λ§λ€μ΄μΌ νλ€.
μ₯μ
μ± μμ΄ λΆλ¦¬λλ―λ‘ ν λΆλΆμ λ³νκ° λ€λ₯Έ λΆλΆμ μν₯μ λ―ΈμΉμ§ μκ² λλ€.
SRPλ ν΄λμ€μ λΆλ¦¬λ₯Ό ν΅ν΄ μ΄ μ₯μ μ νλνλ€λ©΄, ISPλ μΈν°νμ΄μ€λ‘ λΆλ¦¬νμ¬ μ΄ μ₯μ μ νλνλ€.
Dependency inversion principle (DIP, μμ‘΄κ΄κ³ μμ μμΉ)
μ μ
μΆμμ μΈ κ²(μμ μμ€μ κ°λ )μ΄ κ΅¬μ²΄μ μΈ κ²(νμ μμ€μ ꡬν)μ μμ‘΄νλ©΄ μ λκ³ , μλ°©ν₯μ μμ‘΄ κ΄κ³κ° νμ±λμ΄μΌ νλ€λ μμΉ
μ₯μ
μλ°©ν₯μΌλ‘ μμ‘΄νκ² λλ©΄ ꡬ체μ μΈ κ²(νμ μμ€)μ΄ μμ λλ©΄ κ·Έλ³΄λ€ μμ μμ€μΈ λͺ¨λ κ³μΈ΅μμ μμ μ΄ μΌμ΄λκ² λλ€. ꡬ체μ μΈ κ²μΌ μλ‘ λ³νκ° μ¦μΌλ―λ‘ μ΄λ μμ£Ό λΉν¨μ¨μ μ΄λ€.
μλ°©ν₯μΌλ‘ μμ‘΄κ΄κ³λ₯Ό μ€μ νλ©΄ νμ μμ€μ μμ μ΄ μμ μμ€μ μν₯μ λ―ΈμΉμ§ μκ² λλ€.
Last updated