SoftwareEngineering - YunByungKwan/Fundamental GitHub Wiki
SoftwareEngineering
κ°μ²΄μ§ν₯νλ‘κ·Έλλ°μ 5λ μμΉ(SOLID)
- SRP(λ¨μΌ μ±
μ μμΉ)
νλμ λͺ¨λμ νλμ μ‘ν°μ λν΄μλ§ μ±
μμ ΈμΌ νλ€λ μμΉμ
λλ€.(λͺ¨λ: μμ€ νμΌ, μ‘ν°: μ¬μ©μ λλ μ΄ν΄κ΄κ³μμ μ§λ¨)
- OCP(κ°λ°© νμ μμΉ)
νμ₯μλ μ΄λ € μμ΄μΌ νκ³ , λ³κ²½μλ λ«ν μμ΄μΌ νλ€λ μμΉμ
λλ€.
λ€μ λ§νλ©΄, μμ€ν
μ νμ₯νκΈ° μ¬μμΌ νκ³ λμμ λ³κ²½μΌλ‘ μΈν΄ μμ€ν
μ΄ λ무 λ§μ μν₯μ λ°μΌλ©΄ μλλ€λ μλ―Έμ
λλ€.
- LSP(리μ€μ½ν μΉν μμΉ)
Sνμ
μ κ°μ²΄ s1μ΄ μκ³ , Tνμ
κ°μ²΄ t1μ΄ μμλ
t1μ s1μΌλ‘ μΉνν΄λ t1μ νμκ° λ³νμ§ μμΌλ©΄
Sλ Tμ νμ νμ
μ΄λ€λΌλ μμΉμ
λλ€.
(μμ κ°μ²΄λ₯Ό λΆλͺ¨ κ°μ²΄μ μΉνν΄λ μ΄μμμΌλ©΄ LSPλ₯Ό λ§μ‘±νλ€λ μλ―Έ)
- ISP(μΈν°νμ΄μ€ λΆλ¦¬ μμΉ)
μ¬λ¬ ν΄λμ€κ° ν ν΄λμ€μ μμ‘΄νλ κ²½μ° λ§μ ν΄λμ€κ° μμ‘΄νλ ν΄λμ€λ₯Ό μΈν°νμ΄μ€λ₯Ό μ¬μ©ν΄μ λΆλ¦¬ν΄μΌ νλ€λ μμΉμ
λλ€.
- DIP(μμ‘΄μ± μμ μμΉ)
μμ€ μ½λ μμ‘΄μ±μ΄ ꡬ체μ μμ‘΄νλ©΄ μλκ³ μΆμμ μμ‘΄ν΄μΌ νλ€λ μμΉμ
λλ€.