Clean Code - 2
π λ μνκΈ°
γν΄λ¦°μ½λγ 5 ~ 8μ₯ λ μ νκΈ°
- 5μ₯. νμ λ§μΆκΈ°
- 6μ₯. κ°μ²΄μ μλ£ κ΅¬μ‘°
- 7μ₯. μ€λ₯ μ²λ¦¬
- 8μ₯. κ²½κ³
1μ£ΌμΌμ 4μ₯μ© μ½κΈ°κ° λͺ©νμ΄λ©° μ½μ νκΈ°λ₯Ό λΈλ‘κ·Έμ νκΈ°λ‘ μ 리κΉμ§ ν΄λ³΄λ €νλ€.
μ΄λ²μ£Όλ 5μ₯ γνμ λ§μΆκΈ°γ ~ 8μ₯ γκ²½κ³γ κΉμ§ μ½μ νκΈ°λ₯Ό κ°λ΅ν λ¨κ²¨λ³΄μλ€.
5. νμ λ§μΆκΈ°
μ£Όμ ν ν½μ νλ‘κ·Έλλ¨ΈλΌλ©΄ νμμ κΉλνκ² λ§μΆ° μ½λλ₯Ό μ§μΌνλ€λ λ΄μ©μ΄λ€.
"νμμ λ΅μ μλ€. νμΌλ‘ μΌνλ€λ©΄ νμ΄ ν©μν΄ λͺ¨λκ° λ°λ₯Ό μ μλ νμμ μ νκ³ μ€μ²ν΄μΌνλ€."
μ μ μΌλ‘ λμνλ€. κ·ΈλμΌ μννΈμ¨μ΄κ° μΌκ΄μ μΈ μ€νμΌμ 보μΈλ€.
μ΄λ² μ₯μμλ βν κΈΈμ΄β, βλΉ ν ꡬλΆβ, βλ€μ¬μ°κΈ°β λ± μ½λ 컨벀μ (κ΄λ¦¬νκΈ° μ¬μ΄ μ½λλ₯Ό μμ±νκΈ° μν μΌμ’ μ μ½λ© μ€νμΌ κ·μ½)μ μ£Όλ‘ μΈκΈνλ€.
μ¬μ€ μ΄ λΆλΆμ μμ¦μ IDEμμ μ 곡νλ μ΅μ€ν μ (μλ°μ€ν¬λ¦½νΈ νκ²½μμμ ESLint, Prettier λ±λ±)μ μ€μ νμΌμ 곡μ νλ κ² λ§μΌλ‘ νμ μ½λ© 컨벀μ μ λ§μΆ μ μλ λ± λ무λ νΈλ¦¬ν λꡬλ€μ΄ μ 곡λκ³ μλ€.
μ΄λ―Έ μ€μ²νκ³ μλ λΆλΆμ΄κΈ° λλ¬Έμ κ°λ³κ² μ½κ³ λμ΄κ°λ€.
6. κ°μ²΄μ μλ£ κ΅¬μ‘°
μ΄ μ₯μμλ μλ£ κ΅¬μ‘°λ‘ μλ§μ ν΄λμ€λ₯Ό ꡬμ±ν λ μ μ°¨μ§ν₯μ μΈ μ½λμ κ°μ²΄ μ§ν₯ μ½λμμ μ°¨μ΄μ μ μΈκΈνλ€.
κ²½μ°μ λ°λΌ λ€λ₯Έ μλ£κ΅¬μ‘°λ₯Ό μ νμΌ ν¨μ μλ €μ£Όλ©°, νμ 볡μ‘ν μλ£κ΅¬μ‘°κ° μ λ΅μ΄ μλμ μΈκΈνλ€.
λλ‘λ λ¨μν μλ£ κ΅¬μ‘°μ μ μ°¨μ μΈ μ½λκ° κ°μ₯ μ ν©ν μ μμΌλ©°, μ΄λ₯Ό ꡬλΆν μ€ μμμΌνλ€λ μ¬μ€μ κ°μ‘°νλ€.
"λΆλ³ μλ νλ‘κ·Έλλ¨Έλ λͺ¨λ κ²μ΄ κ°μ²΄λΌλ μκ°μ΄ λ―Έμ μμ μ μλ€. λλ‘λ λ¨μν μλ£ κ΅¬μ‘°μ μ μ°¨μ μΈ μ½λκ° κ°μ₯ μ ν©ν μν©λ μλ€."
λ°λΌμ μμ€ν μ ꡬνν λ, μλ£μ΄ μλ£ νμ μ μΆκ°νλ μ μ°μ±(κ°μ²΄κ° μ ν©)μ΄ νμν μ§, μλ‘μ΄ λμμ μΆκ°νλ μ μ°μ±(μλ£ κ΅¬μ‘°μ μ μ°¨μ μΈ μ½λκ° μ ν©)μ΄ νμνμ§ νλ¨ ν μ΅μ μΈ ν΄κ²°μ± μ μ νν΄μΌνλ€κ³ μΈκΈνλ€.
μ±
μ μ½λ λμ€ νμ¬ λ΄κ° κ°μ₯ λ§μ΄ μ°κ³ μλ μλ£ κ΅¬μ‘°(DTO)μ λν μΈκΈμ΄ μμ΄ λ°κ°μμ.. μ 리λ₯Ό νλ² νκ³ λ€μμ₯μΌλ‘ λμ΄κ°κ² λ€.
6-1. μλ£ μ λ¬ κ°μ²΄ (DTO)
μλ£ κ΅¬μ‘°μ²΄λ λ³μλ§ μκ³ ν¨μκ° μλ νΉμ§μ΄ μλ ν΄λμ€λ₯Ό μΌμ»«λλ€.
μλ£ κ΅¬μ‘°μ²΄λ λͺ©μ μ΄ λΆλͺ νλ―λ‘ μλ£ μ λ¬ κ°μ²΄(Data Transfer Object, DTO)λΌ νλ€.
- DTOλ κ°κ³΅λμ§ μμ μ 보λ₯Ό μ½λμμ μ¬μ©ν κ°μ²΄λ‘ λ³ννλ λ¨κ³μμ κ°μ₯ μ²μμΌλ‘ μ¬μ©νλ ꡬ쑰체μ΄λ€.
7. μ€λ₯ μ²λ¦¬
μ΄ μ₯μμ κΈ°μ΅μ λ¨λ 문ꡬλ₯Ό κΌ½μλ©΄ μλμ λ¬Έμ₯μ κΌ½μ κ² κ°λ€.
"λκ° μ λͺ»λ κ°λ₯μ±μ λ μ‘΄μ¬νλ€."
μ± μλ μμΈλ₯Ό μ§μνμ§ μλ νλ‘κ·Έλλ°μ λν μΈμ΄λΆν° μ€λͺ μ μ΄μ΄κ°μ§λ§, νμ¬ μμΈ μ²λ¦¬ κΈ°λ²μ μλΉν λ€μν΄μ‘μΌλ©° λ΄κ° μ°κ³ μλ NestJS νλ μμν¬μμλ μμΈλ₯Ό λ΄μ₯ λ μ΄μ΄(νλ‘κ·Έλλ¨Έκ° μμΈ μ²λ¦¬λ₯Ό νμ§ μμλ μλμΌλ‘ ν΄λΉ λ μ΄μ΄μμ μ²λ¦¬λ¨)λ‘ κ΅¬λΆνμ¬ μλμΌλ‘ μ²λ¦¬λ₯Όνκ³ μλ€.
μ°Έκ³ : NestJS xception-filters
μλ¬λ₯Ό κ·Έλλ‘ λ ΈμΆμν€μ§ μκ² μ²λ¦¬νλ κ³Όμ μΈ μ€λ₯ μ²λ¦¬λ κ°λ°μμκ² λΉμ°ν μμμ΄λΌ μκ°νλ€.
μ΄ μ± μμ λν μλ¬λ try-catchλ¬Έ μ²λΌ νλ‘κ·Έλ¨ λ Όλ¦¬μ μ€λ₯ μ²λ¦¬λ₯Ό λΆλ¦¬ν΄ λ μμ μΈ μ¬μμΌλ‘ κ³ λ €ν΄μΌ νΌνΌνκ³ κΉ¨λν μ½λλ₯Ό μμ±ν μ μμμ λ€μνλ² κ°μ‘°νλ€.
8. κ²½κ³
μ±ν° μ λͺ©λ§ λ³΄κ³ λ λ¬΄μ¨ λ΄μ©μΈμ§ κ°μ΄ μ μμ‘νλ€. (κ²½κ³..?)
μ½κ³ λλ μΈλΆ λΌμ΄λΈλ¬λ¦¬ λ± μΈλΆ μ½λλ₯Ό μ°λ¦¬ μ½λμ λ Ήμ¬λ΄λ κ³Όμ μ€ μ£Όμν΄μΌ ν μ μ μΈκΈνλ€.
"μΈλΆ μ½λλ₯Ό μ΅νκΈ°λ μ΄λ ΅λ€. μΈλΆ μ½λλ₯Ό ν΅ν©νκΈ°λ λμ± μ΄λ ΅λ€. λ κ°μ§λ₯Ό λμμ νκΈ°λ λλ°° μ΄μ μ΄λ ΅λ€."
μ¦, μ΄ μ±ν°λ₯Ό μ½κ³ λλμ μ βμΈλΆ μ½λ(ν¨ν€μ§ λ±)λ ν΅μ νκΈ° μ΄λ ΅λ€.βλΌλ κ²°λ‘ μ΄λ€.
λ°λΌμ κ°λ°μλ ν΅μ ν μ μλ μμμ ꡬλΆν΄μΌνλ©° κ²½κ³μ μμΉνλ μ½λλ κΉλν λΆλ¦¬ν΄μΌνλ€.
μ°λ¦¬λ μΈλΆ ν¨ν€μ§λ₯Ό μΈμΈνκ² λͺ¨λ μμμΌ ν νμλ μλ€.
ν΅μ κ° λΆκ°λ₯ν μΈλΆ ν¨ν€μ§λ₯Ό κ³ λ €νκΈ° 보λ€λ μ°λ¦¬ μ½λμ μμ‘΄ν΄μ μμ€ν μ μ€κ³ν΄μΌνλ€ κ°μ‘°νλ€.