Clean Code - 2

πŸ“–
Book
2023.04.02

book.jpeg


πŸ““ λ…μ„œν›„κΈ°

γ€Œν΄λ¦°μ½”λ“œγ€ 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



error.jpeg



μ—λŸ¬λ₯Ό κ·ΈλŒ€λ‘œ λ…ΈμΆœμ‹œν‚€μ§€ μ•Šκ²Œ μ²˜λ¦¬ν•˜λŠ” 과정인 였λ₯˜ μ²˜λ¦¬λŠ” κ°œλ°œμžμ—κ² λ‹Ήμ—°ν•œ μ†Œμ–‘μ΄λΌ μƒκ°ν•œλ‹€.

이 μ±…μ—μ„œ λ˜ν•œ μ—λŸ¬λŠ” try-catchλ¬Έ 처럼 ν”„λ‘œκ·Έλž¨ 논리와 였λ₯˜ 처리λ₯Ό 뢄리해 λ…μžμ μΈ μ‚¬μ•ˆμœΌλ‘œ κ³ λ €ν•΄μ•Ό νŠΌνŠΌν•˜κ³  κΉ¨λ—ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μžˆμŒμ„ λ‹€μ‹œν•œλ²ˆ κ°•μ‘°ν•œλ‹€.



8. 경계


챕터 제λͺ©λ§Œ λ³΄κ³ λŠ” 무슨 λ‚΄μš©μΈμ§€ 감이 잘 μ•ˆμž‘ν˜”λ‹€. (경계..?)

읽고 λ‚˜λ‹ˆ μ™ΈλΆ€ 라이브러리 λ“± μ™ΈλΆ€ μ½”λ“œλ₯Ό 우리 μ½”λ“œμ— λ…Ήμ—¬λ‚΄λŠ” κ³Όμ • 쀑 μ£Όμ˜ν•΄μ•Ό ν•  점을 μ–ΈκΈ‰ν–ˆλ‹€.


"μ™ΈλΆ€ μ½”λ“œλ₯Ό μ΅νžˆκΈ°λŠ” μ–΄λ ΅λ‹€. μ™ΈλΆ€ μ½”λ“œλ₯Ό ν†΅ν•©ν•˜κΈ°λŠ” λ”μš± μ–΄λ ΅λ‹€. 두 κ°€μ§€λ₯Ό λ™μ‹œμ— ν•˜κΈ°λŠ” 두배 이상 μ–΄λ ΅λ‹€."


즉, 이 챕터λ₯Ό 읽고 λŠλ‚€μ μ€ β€œμ™ΈλΆ€ μ½”λ“œ(νŒ¨ν‚€μ§€ λ“±)λŠ” ν†΅μ œν•˜κΈ° μ–΄λ ΅λ‹€.β€λΌλŠ” 결둠이닀.

λ”°λΌμ„œ κ°œλ°œμžλŠ” ν†΅μ œν•  수 μžˆλŠ” μ˜μ—­μ„ κ΅¬λΆ„ν•΄μ•Όν•˜λ©° 경계에 μœ„μΉ˜ν•˜λŠ” μ½”λ“œλŠ” κΉ”λ”νžˆ λΆ„λ¦¬ν•΄μ•Όν•œλ‹€.

μš°λ¦¬λŠ” μ™ΈλΆ€ νŒ¨ν‚€μ§€λ₯Ό μ„Έμ„Έν•˜κ²Œ λͺ¨λ‘ μ•Œμ•„μ•Ό ν•  ν•„μš”λŠ” μ—†λ‹€.

ν†΅μ œκ°€ λΆˆκ°€λŠ₯ν•œ μ™ΈλΆ€ νŒ¨ν‚€μ§€λ₯Ό κ³ λ €ν•˜κΈ° λ³΄λ‹€λŠ” 우리 μ½”λ“œμ— μ˜μ‘΄ν•΄μ„œ μ‹œμŠ€ν…œμ„ μ„€κ³„ν•΄μ•Όν•œλ‹€ κ°•μ‘°ν•œλ‹€.



Previous
Clean Code - 1
πŸ“–Book
2023.03.20
Next
Clean Code - 3
πŸ“–Book
2023.04.09