π€ν΄λ¦° μ½λκ° λ¬΄μμΈκ°μ?
λ§ κ·Έλλ‘ μ½κΈ° μ¬μ΄ μ½λκ° λ°λ‘ ν΄λ¦° μ½λ.
μ λͺ ν κ°λ°μλ€μ ν΄λ¦° μ½λλ₯Ό λ€μκ³Ό κ°μ΄ μ μνμ΅λλ€.
"ν΄λ¦° μ½λλ λ¨μνκ³ μ§μ μ μ΄λ©°, μ΅λν μ½κΈ° μ½κ³ μμ νκΈ° μ½μ΅λλ€. ν΄λ¦° μ½λλ μλλ₯Ό λͺ ννκ² νννλ©°, μμ±μμ μλλλ‘ λμν©λλ€. μ΄λ μ μμ±λ μμ€μ μ½λ κ²μ²λΌ μ½κΈ° μ¦κ±°μμΌ ν©λλ€." -λ‘λ²νΈ C. λ§ν΄(Robert C. Martin)μ μ± "Clean Code: A Handbook of Agile Software Craftsmanship”
"ν΄λ¦° μ½λλ μ΄λ€ μ¬λλ μμ νκ³ μΆμ΄νμ§ μλλ‘ μμ±νλ μ½λλ€." - μλ 컀λν(Ward Cunningham, μ μμΌ(Agile) κ°λ° λ°©λ²λ‘ κ³Ό μ΅μ€νΈλ¦Ό νλ‘κ·Έλλ°(Extreme Programming)μ μ°½μμ)
“μλμ λͺ νν νν” μ¦ μ½λλ₯Ό ν΅ν “λͺ©μ μ μνΈ κ³΅μ ”λΌκ³ μκ°ν©λλ€!
π€¨ν΄λ¦° μ½λλ₯Ό μ§λ μ΄μ ?
κ°λ° 곡λΆλ₯Ό ν 7κ°μ λμ ν΄λ¦° μ½λμ μ€μμ±μ λν΄μ μλ μμ΄ λ§μ΄ λ€μκΈ°μ κ΅μ₯ν μ€μν κ°λ μ΄λΌ μκ° ν©λλ€. νμ§λ§ λ§μ ν νλ‘μ νΈλ₯Ό μ§ννλ μ€ν°λμ λ€μ΄κ° νμ μ ν λ κ΅μ₯ν λμΉκΈ° μ¬μ΄ λΆλΆμ΄λΌκ³ μκ°ν©λλ€.
μ¬μ€ ν΄λ¦° μ½λλ₯Ό 곡λΆνκ³ μ΄ κΈμ ν¬μ€ν νλ μ΄μ μμ ν νλ‘μ νΈμμ μλκ° λͺ νν μ½λλ₯Ό μ λ κ²μ΄ μλλΌ λ§λ€μ΄μ§ μ½λμ μλλ₯Ό μ§μ΄ λ£μΌλ €λ μμΈλ₯Ό κ²½ννκΈ° λλ¬Έμ λλ€.
μ΄λ° λ§μΈλ μ μ΄ μ μλͺ»λμκ³ , ν΄λ¦° μ½λλ₯Ό μ§ν₯ν΄μΌ νλ μ΄μ κ° λ¬΄μμΌκΉμ?
Technical Debt
μ€μ νλ‘μ νΈμμ λ°μνλ μμΉμ μ΄μμ μΈ μμΉμ κ·Έλνλ μμ κ°μ΅λλ€.
κ°λ° μ΄κΈ°μλ ν΄λ¦°μ½λλ‘ κ°λ°νκΈ° 보λ€λ μ’ λ λΉ λ₯΄κ³ μ¬μ΄ λ°©λ²μ μ ννλ©΄μ, μ μ§λ³΄μκ° μ΄λ €μ μ§κ³ , κ²°κ΅ μ μ§λ³΄μμ 컀λ€λ κ±Έλ¦Όλμ΄ λκ² μ£ .
μ΄κ²μ΄ Technical Debtμ λλ€. λ» κ·Έλλ‘ κΈ°μ μ λΆμ±, μΈμ κ°λ ν΄κ²°ν΄μΌλ λ¬Έμ λΌλκ±°μ£ .
πν΄λ¦° μ½λλ₯Ό μμ±νλ λ°©λ²
- KISS μμΉ (Keep It Simple, Stupid): μ½λλ₯Ό κ°λ₯ν ν λ¨μνκ² μμ±ν΄μΌ ν©λλ€. 볡μ‘μ±μ μ΅μννκ³ λΆνμν κΈ°λ₯μ΄λ μ€κ³λ₯Ό νΌνλ κ²μ΄ μ€μν©λλ€.
- DRY μμΉ (Don't Repeat Yourself): μ€λ³΅μ μ΅μνν΄μΌ ν©λλ€. κ°μ μ½λλ₯Ό μ¬λ¬ κ³³μμ λ°λ³΅ν΄μ μμ±νλ κ²μ νΌνκ³ , μ€λ³΅λλ λ‘μ§μ ν¨μλ ν΄λμ€ λ±μΌλ‘ μΆμννμ¬ μ¬μ¬μ©μ±μ λμ¬μΌ ν©λλ€.
- YAGNI μμΉ (You Aren't Gonna Need It): λΆνμν κΈ°λ₯μ΄λ μ½λλ₯Ό μμ±νμ§ μμμΌ ν©λλ€. νμ¬ νμν μꡬμ¬νμ μ§μ€νκ³ , λ―Έλμ νμν μ§λ λͺ¨λ₯Ό κΈ°λ₯μ 미리 ꡬννμ§ μμ΅λλ€.
- SOLID μμΉ: SOLIDλ λ€μ― κ°μ§ κ°μ²΄ μ§ν₯ μ€κ³ μμΉμ μκΈμλ₯Ό λ΄ κ²μΌλ‘, μννΈμ¨μ΄ μ€κ³μ μ μ°μ±κ³Ό νμ₯μ±μ λμ΄λλ° λμμ΄ λ©λλ€.
- λ¨μΌ μ± μ μμΉ(Single Responsibility Principle): νλμ ν΄λμ€λ νλμ μ± μλ§ κ°μ ΈμΌ ν©λλ€.
- κ°λ°©-νμ μμΉ(Open/Closed Principle): κΈ°μ‘΄μ μ½λλ₯Ό λ³κ²½νμ§ μμΌλ©΄μ κΈ°λ₯μ νμ₯ν μ μμ΄μΌ ν©λλ€.
- 리μ€μ½ν μΉν μμΉ(Liskov Substitution Principle): νμ ν΄λμ€λ μμ ν΄λμ€μ κΈ°λ₯μ μμ ν λ체ν μ μμ΄μΌ ν©λλ€.
- μΈν°νμ΄μ€ λΆλ¦¬ μμΉ(Interface Segregation Principle): ν΄λΌμ΄μΈνΈλ μμ μ΄ μ¬μ©νμ§ μλ μΈν°νμ΄μ€μ μμ‘΄νμ§ μμμΌ ν©λλ€.
- μμ‘΄ μμ μμΉ(Dependency Inversion Principle): μμ‘΄ κ΄κ³λ₯Ό λ§λ€ λ κ³ μμ€ λͺ¨λμ μ μμ€ λͺ¨λμ ꡬνμ μμ‘΄νμ§ μλλ‘ ν΄μΌ ν©λλ€.
- κ°λ μ±κ³Ό λͺ νμ±: λ³μ, ν¨μ, ν΄λμ€ λ±μ μ΄λ¦μ λͺ ννκ³ μλ―Έ μλ μ΄λ¦μ μ¬μ©ν΄μΌ ν©λλ€. λ€μ¬μ°κΈ°μ 곡백μ μ¬λ°λ₯΄κ² μ¬μ©νμ¬ μ½λμ ꡬ쑰λ₯Ό λͺ νν ννν΄μΌ ν©λλ€. λν μ£Όμμ μ μ νκ² νμ©νμ¬ μ½λμ μλλ₯Ό μ€λͺ ν΄μΌ ν©λλ€.
- μμ ν¨μμ λͺ¨λ: ν¨μλ μκ³ ν κ°μ§ μΌλ§ μννλλ‘ μμ±νκ³ , λͺ¨λμ κ΄λ ¨λ κΈ°λ₯μ λ¬Άμ΄μ μμ§μ±μ λμ¬μΌ ν©λλ€.
- ν μ€νΈ μ§ν₯: μ½λλ₯Ό μμ±ν λ λ¨μ ν μ€νΈλ₯Ό κ³ λ €νμ¬ μ€κ³νκ³ , ν μ€νΈ κ°λ₯ν μ½λλ₯Ό μμ±ν΄μΌ ν©λλ€. ν μ€νΈκ° μ¬μ΄ μ½λλ λ²κ·Έλ₯Ό μ€μ΄κ³ μ½λμ μ λ’°μ±μ λμ λλ€.
μΆμ²
λ‘λ²νΈ C. λ§ν΄(Robert C. Martin)μ μ± "Clean Code: A Handbook of Agile Software Craftsmanship”
'κ°λ° μμ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[κ°λ° μμ] λ©μΈμ§ νλ? (0) | 2023.07.28 |
---|---|
[κ°λ° μμ] μ μΈμ νλ‘κ·Έλλ°κ³Ό λͺ λ Ήμ νλ‘κ·Έλλ°, React.jsμ μ μΈμ νλ‘κ·Έλλ° (0) | 2023.07.27 |
[κ°λ° μμ] κ°μ²΄μ§ν₯(OOP) vs μ μ°¨μ§ν₯(PP) (0) | 2023.07.22 |
[κ°λ° μμ] API, REST, RESTful APIμ μλ―Έμ μ€κ³κ·μΉ (0) | 2023.07.22 |
[κ°λ° μμ] TDDλ 무μμΈκ°? (0) | 2023.07.21 |