π μ€λ TIL 3μ€ μμ½
- SRP(λ¨μΌμ± μμμΉ) : ν΄λμ€λ μμμΌ νκ³ ν΄λμ€λ μ± μ, μ¦ λ³κ²½ν μ΄μ κ° νλμ¬μΌ νλ€.
- OCP(κ°λ°©νμμμΉ) : μ κΈ°λ₯μ μμ νκ±°λ κΈ°μ‘΄ κΈ°λ₯μ λ³κ²½ν λ 건λ릴 μ½λκ° μ΅μμΈ μμ€ν κ΅¬μ‘°κ° λ°λμ§νλ€. μ΄μμ μΈ μμ€ν μ΄λΌλ©΄ μ κΈ°λ₯μ μΆκ°ν λ μμ€ν μ νμ₯ν λΏ κΈ°μ‘΄ μ½λλ₯Ό λ³κ²½νμ§λ μλλ€.
- DIP(μμ‘΄μμ μμΉ) : μμΈν ꡬνμ μμ‘΄νλ ν΄λΌμ΄μΈνΈ ν΄λμ€λ ꡬνμ΄ λ°λλ©΄ μνμ λΉ μ§λ€. κ·Έλμ μ°λ¦¬λ μΈν°νμ΄μ€μ μΆμ ν΄λμ€λ₯Ό μ¬μ©ν΄ ꡬνμ΄ λ―ΈμΉλ μν₯μ 격리νλ€.
π TIL (Today I Learned) λ μ§
2022.03.09
π μ€λ μ½μ λ²μ
10μ₯. ν΄λμ€
π μ± μμ κΈ°μ΅νκ³ μΆμ λ΄μ©
- ν΄λμ€λ μμμΌ νλ€! ν¨μλ 물리μ μΈ ν μλ‘ ν¬κΈ°λ₯Ό μΈ‘μ νλ€. ν΄λμ€λ λ€λ₯Έ μ²λλ₯Ό μ¬μ©νλ€. ν΄λμ€κ° λ§‘μ μ± μμ μΌλ€.
- ν΄λμ€ μ΄λ¦μ ν΄λΉ ν΄λμ€ μ± μμ κΈ°μ ν΄μΌ νλ€. μ€μ λ‘ μλͺ μ ν΄λμ€ ν¬κΈ°λ₯Ό μ€μ΄λ 첫 λ²μ§Έ κ΄λ¬Έμ΄λ€. κ°κ²°ν μ΄λ¦μ΄ λ μ€λ₯΄μ§ μλλ€λ©΄ νκ²½ ν΄λμ€ ν¬κΈ°κ° λ무 컀μ κ·Έλ λ€. ν΄λμ€ μ΄λ¦μ΄ λͺ¨νΈνλ€λ©΄ νκ²½ ν΄λμ€ μ± μμ΄ λ무 λ§μμλ€.
- λ¨μΌμ± μμμΉ(Single Responsibility Principle, SRP) : ν΄λμ€λ λͺ¨λμ λ³κ²½ν μ΄μ κ° νλ, λ¨ νλλΏμ΄μ΄μΌ νλ€λ μμΉμ΄λ€. SRPλ 'μ± μ'μ΄λΌλ κ°λ μ μ μνλ©° μ μ ν ν΄λμ€ ν¬κΈ°λ₯Ό μ μνλ€. ν΄λμ€λ μ± μ, μ¦ λ³κ²½ν μ΄μ κ° νλμ¬μΌ νλ€λ μλ―Έλ€.
- ν° ν΄λμ€ λͺ κ°κ° μλλΌ μμ ν΄λμ€ μ¬λΏμΌλ‘ μ΄λ€μ§ μμ€ν μ΄ λ λ°λμ§νλ€. μμ ν΄λμ€λ κ°μ λ§‘μ μ± μμ΄ νλλ©°, λ³κ²½ν μ΄μ κ° νλλ©°, λ€λ₯Έ μμ ν΄λμ€μ νλ ₯ν΄ μμ€ν μ νμν λμμ μννλ€.
- μμ§λ(Cohesion) : ν΄λμ€λ μΈμ€ν΄μ€ λ³μ μκ° μμμΌ νλ€. κ° ν΄λμ€ λ©μλλ ν΄λμ€ μΈμ€ν΄μ€ λ³μλ₯Ό νλ μ΄μ μ¬μ©ν΄μΌ νλ€. μΌλ°μ μΌλ‘ λ©μλκ° λ³μλ₯Ό λ λ§μ΄ μ¬μ©ν μλ‘ λ©μλμ ν΄λμ€λ μμ§λκ° λ λλ€. λͺ¨λ μΈμ€ν΄μ€ λ³μλ₯Ό λ©μλλ§λ€ μ¬μ©νλ ν΄λμ€λ μμ§λκ° κ°μ₯ λλ€.
- μμ§λλ₯Ό μ μ§νλ©΄ μμ ν΄λμ€ μ¬λΏμ΄ λμ¨λ€ : ν° ν¨μλ₯Ό μμ ν¨μ μ¬λΏμΌλ‘ μͺΌκ°λ€ 보면 μ’ μ’ μμ ν΄λμ€ μ¬λΏμΌλ‘ μͺΌκ°€ κΈ°νκ° μκΈ΄λ€. κ·Έλ¬λ©΄μ νλ‘κ·Έλ¨μ μ μ λ 체κ³κ° μ‘νκ³ κ΅¬μ‘°κ° ν¬λͺ ν΄μ§λ€.
- OCP(Open-Closed Principle) : ν΄λμ€λ νμ₯μ κ°λ°©μ μ΄κ³ μμ μ νμμ μ΄μ΄μΌ νλ€λ κ°μ²΄ μ§ν₯ μ€κ³μ ν΅μ¬ μμΉ
- λ³κ²½νκΈ° μ¬μ΄ ν΄λμ€ : μ κΈ°λ₯μ μμ νκ±°λ κΈ°μ‘΄ κΈ°λ₯μ λ³κ²½ν λ 건λ릴 μ½λκ° μ΅μμΈ μμ€ν κ΅¬μ‘°κ° λ°λμ§νλ€. μ΄μμ μΈ μμ€ν μ΄λΌλ©΄ μ κΈ°λ₯μ μΆκ°ν λ μμ€ν μ νμ₯ν λΏ κΈ°μ‘΄ μ½λλ₯Ό λ³κ²½νμ§λ μλλ€.
- DIP(Dependency Inversion Principle) : ν΄λμ€κ° μμΈν ꡬνμ΄ μλλΌ μΆμνμ μμ‘΄ν΄μΌ νλ€λ μμΉ
- λ³κ²½μΌλ‘λΆν° 격리 : μꡬμ¬νμ λ³νκΈ° λ§λ ¨μ΄λ€. λ°λΌμ μ½λλ λ³νκΈ° λ§λ ¨μ΄λ€. κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° μ λ¬Έμμ μ°λ¦¬λ ꡬ체μ μΈ(concrete) ν΄λμ€μ μΆμ(abstract) ν΄λμ€κ° μλ€κ³ λ°°μ λ€. ꡬ체μ μΈ ν΄λμ€λ μμΈν ꡬν(μ½λ)μ ν¬ν¨νλ©° μΆμ ν΄λμ€λ κ°λ λ§ ν¬ν¨νλ€κ³ λ λ°°μ λ€. μμΈν ꡬνμ μμ‘΄νλ ν΄λΌμ΄μΈνΈ ν΄λμ€λ ꡬνμ΄ λ°λλ©΄ μνμ λΉ μ§λ€. κ·Έλμ μ°λ¦¬λ μΈν°νμ΄μ€μ μΆμ ν΄λμ€λ₯Ό μ¬μ©ν΄ ꡬνμ΄ λ―ΈμΉλ μν₯μ 격리νλ€.
π μ€λ μ½μ μκ° λ° λ μ€λ₯΄λ μκ°
- Java/Spring μΉ κ°λ° 곡λΆλ₯Ό νλ©΄μ κ°μ²΄μ§ν₯ μ€κ³ μμΉμ λν΄ κ³΅λΆνμ μ΄ μλλ° μ΄λ² ν΄λμ€ ννΈμμ μ€λͺ νκ³ μλ λλΆλΆμ λ΄μ©μ΄ 곡λΆνλ λ΄μ©κ³Ό λμΌ μ μμ μλ λ΄μ©μ΄μλ€. μ μ 곡λΆν λλ μ©μ΄λ λ―μ€κ³ μ μΈμμ§μ§λ μκ³ κ·Έλ¬λλ° μμΈν μ€λͺ κ³Ό ν¨κ» λ°°μ°λ€λ³΄λ μ§λλ² λ³΄λ€ λ μ μ΄ν΄νκ² λ κ² κ°λ€. νμ§λ§ μ΄κ±΄ λ¨μν μ§μλ§ μμΈ κ²μ΄κ³ μ€μ μ€κ³λ νκ³ κ°λ°λ νλ©΄μ κ³μ μ΅νλκ°μΌ μ λ§ λ΄ κ²μΌλ‘ λ§λ€ μ μμ κ² κ°λ€.
π μ€λ μ½μ λ€λ₯Έ μ¬λμ TIL
- kihyunλμ TIL (https://velog.io/@kihyun/%EB%85%B8%EA%B0%9C%EB%B6%81-%ED%81%B4%EB%A6%B0%EC%BD%94%EB%93%9C-20%EC%9D%BC%EC%B0%A8)
- sorkwlsdkekλμ TIL (https://nomadcoders.co/community/thread/3460)
λκΈ0