λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ’» 개발자 이야기/✏️ μ •λ¦¬λ…ΈνŠΈ

[TIL] 4μž₯ μ‹€μš©μ£Όμ˜ νŽΈμ§‘μ¦

by μ •μ„ ν•œ 2022. 5. 20.
728x90
λ°˜μ‘ν˜•
4μž₯ μ‹€μš©μ£Όμ˜ νŽΈμ§‘μ¦

1. μ±…μ—μ„œ κΈ°μ–΅ν•˜κ³  싢은 λ‚΄μš©

μ—¬λŸ¬λΆ„μ€ μ™„λ²½ν•œ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ§Œλ“€ 수 μ—†λ‹€.
이 말에 μƒμ²˜λ°›μ•˜λŠ”κ°€? 그러면 μ•ˆ λœλ‹€. μ‚Άμ˜ 곡리둜 μΈμ •ν•˜κ³  받아듀여라. 그리고 μΆ•ν•˜ν•˜λΌ.
μ™„λ²½ν•œ μ†Œν”„νŠΈμ›¨μ–΄λŠ” μ‘΄μž¬ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ΄λ‹€. -145p
μ‹€μš©μ£Όμ˜ ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” 방어적인 μ½”λ”©μ—μ„œ ν•œ 걸음 더 λ‚˜μ•„κ°„λ‹€. μ‹€μš©μ£Όμ˜ ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” 자기 μžμ‹  μ—­μ‹œ λ―Ώμ§€ μ•ŠλŠ”λ‹€.
μ–΄λŠ λˆ„κ΅¬λ„, μ‹¬μ§€μ–΄λŠ” 자기 μžμ‹ λ„ μ™„λ²½ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μ—†μŒμ„ μ•ŒκΈ° λ•Œλ¬Έμ— μ‹€μš©μ£Όμ˜ ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” μžμ‹ μ˜ μ‹€μˆ˜μ— λŒ€λΉ„ν•œ 방어책을 λ§ˆλ ¨ν•œλ‹€. -146p

[23. 계약에 μ˜ν•œ 섀계]
μ •μ§ν•œ 거래λ₯Ό 보μž₯ν•˜λŠ” μ΅œμ„ μ˜ 해법 쀑 ν•˜λ‚˜λŠ” '계약'이닀. μ†Œν”„νŠΈμ›¨μ–΄ λͺ¨λ“ˆμ΄ μ„œλ‘œ μ†Œν†΅ν•˜λŠ” 것을 돕기 μœ„ν•΄ 계약과 λ™μΌν•œ κ°œλ…μ„ μ‚¬μš©ν•  수 μžˆλ‹€. -147p
DBC(Design By Contract) : λ‹¨μˆœν•˜μ§€λ§Œ κ°•λ ₯ν•œ κΈ°λ²•μœΌλ‘œ, ν”„λ‘œκ·Έλž¨μ˜ 정확성을 보μž₯ν•˜κΈ° μœ„ν•΄ μ†Œν”„νŠΈμ›¨μ–΄ λͺ¨λ“ˆμ˜ κΆŒλ¦¬μ™€ μ±…μž„μ„ λ¬Έμ„œν™”ν•˜κ³  ν•©μ˜ν•˜λŠ” 데에 μ΄ˆμ μ„ λ§žμΆ˜λ‹€.
μ •ν™•ν•œ ν”„λ‘œκ·Έλž¨μ΄λž€? : μžμ‹ μ΄ ν•˜λŠ” 일이라고 μ£Όμž₯ν•˜λŠ” 것보닀 λ§Žμ§€λ„ 적지도 μ•Šκ²Œ λ”± 그만큼만 ν•˜λŠ” ν”„λ‘œκ·Έλž¨.
이 λ‚΄μš©λ“€μ„ λ¬Έμ„œν™”ν•˜κ³  κ²€μ¦ν•˜λŠ” 것이 '계약에 μ˜ν•œ 섀계'의 핡심이닀.
  1) 선행쑰건 : λ£¨ν‹΄μ˜ μš”κ΅¬μ‚¬ν•­.
  2) 후행쑰건 : 루틴이 μ™„λ£Œλ˜μ—ˆμ„ λ•Œμ˜ μƒνƒœ, 루틴은 μ–Έμ  κ°€ μ’…λ£Œλ¨μ„ 의미.
  3) 클래슀 λΆˆλ³€μ‹

[24. 죽은 ν”„λ‘œκ·Έλž¨μ€ 거짓말을 ν•˜μ§€ μ•ŠλŠ”λ‹€]
문제의 μ½”λ“œλŠ” 정상적인 μƒν™©μ—μ„œλŠ” μ‹€νŒ¨ν•˜μ§€ μ•Šμ•˜μ„ 것이닀. ν•˜μ§€λ§Œ μš°λ¦¬λŠ” μ§€κΈˆ λ°©μ–΄μ μœΌλ‘œ μ½”λ”©ν•˜κ³  μžˆλ‹€. 데이터가 μš°λ¦¬κ°€ μƒκ°ν•˜λŠ”λŒ€λ‘œμΈμ§€, μ„œλΉ„μŠ€μ—μ„œ μž‘λ™ν•˜λŠ” μ½”λ“œκ°€ μš°λ¦¬κ°€ μƒκ°ν•˜λŠ” κ·Έ μ½”λ“œμΈμ§€ 확인해야 ν•œλ‹€. ν•„μš”ν•œ λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ΄ μ˜¬λ°”λ₯Έ λ²„μ „μœΌλ‘œ μ‹€μ œλ‘œ λ‘œλ“œλλŠ”μ§€λ„ 확인해야 ν•œλ‹€.
λͺ¨λ“  였λ₯˜λŠ” 정보λ₯Ό μ€€λ‹€. -159p
λ§μΉ˜μ§€ 말고 멈좰라. 방금 μžˆμ„ 수 μ—†λŠ” 일이 λ°œμƒν–ˆλ‹€λŠ” 것을 μ½”λ“œκ°€ λ°œκ²¬ν–ˆλ‹€λ©΄ ν”„λ‘œκ·Έλž¨μ€ λ”λŠ” μœ νš¨ν•˜μ§€ μ•Šλ‹€κ³  ν•  수 μžˆλ‹€. 이 μ‹œμ  μ΄ν›„λ‘œ ν•˜λŠ” 일은 λͺ¨λ‘ μˆ˜μƒμ©μ€ 게 λœλ‹€. λ˜λ„λ‘ 빨리 μ’…λ£Œν•  일이닀. -161p

[25. 단정적 ν”„λ‘œκ·Έλž˜λ°]
그런 일은 μ ˆλŒ€ 일어날 리 μ—†μ–΄. μ΄λŸ°μ‹μœΌλ‘œ μžμ‹ μ„ κΈ°λ§Œν•˜μ§€ 말자, 특히 μ½”λ”©ν•  λ•ŒλŠ”.
이런 생각듀이 λ“ λ‹€λ©΄ 그런 일을 ν™•μΈν•˜λŠ” μ½”λ“œλ₯Ό μΆ”κ°€ν•˜λΌ : 단정문(assertion)을 μ‚¬μš©ν•˜λŠ” 것이닀. λ§€κ°œλ³€μˆ˜λ‚˜ κ²°κ³Όκ°€ μ ˆλŒ€ nullμ΄μ–΄μ„œλŠ” μ•ˆ λœλ‹€λ©΄ λͺ…μ‹œμ μœΌλ‘œ κ²€μ‚¬ν•˜λΌ.
ν•˜μ§€λ§Œ μ§„μ§œ 였λ₯˜ 처리λ₯Ό ν•΄μ•Ό ν•˜λŠ” 곳에 단정을 λŒ€μ‹  μ‚¬μš©ν•˜μ§€λŠ” 말라. 단정은 κ²°μ½” μΌμ–΄λ‚˜λ©΄ μ•ˆ λ˜λŠ” 것듀을 κ²€μ‚¬ν•œλ‹€. -163p
우리의 첫 번째 방어선은 κ°€λŠ₯ν•œ 였λ₯˜λ₯Ό λͺ¨λ‘ κ²€μ‚¬ν•˜λŠ” 것이고, κ·Έ λ‹€μŒμ€ κ·ΈλŸ¬κ³ λ„ λ†“μΉœ 것을 μž‘μ•„λ‚΄κΈ° μœ„ν•΄ 단정을 μ‚¬μš©ν•˜λŠ” 것이닀. ν”„λ‘œκ·Έλž¨μ„ μΆœμ‹œ ν•  λ•Œ 단정 κΈ°λŠ₯을 κΊΌ λ²„λ¦¬λŠ” 것은 쀄타기 곑예λ₯Ό ν•˜λ©΄μ„œ μ—°μŠ΅μœΌλ‘œ ν•œ 번 κ±΄λ„ˆ λ΄€λ‹€κ³  κ·Έλ¬Ό 없이 κ±΄λ„ˆλŠ” 것과 λΉ„μŠ·ν•˜λ‹€. -165p

[26. λ¦¬μ†ŒμŠ€ μ‚¬μš©μ˜ κ· ν˜•]
μžμ‹ μ΄ μ‹œμž‘ν•œ 것은 μžμ‹ μ΄ 끝내라, μ΄μƒμ μœΌλ‘œ λ§ν•΄μ„œ λ¦¬μ†ŒμŠ€λ₯Ό ν• λ‹Ήν•˜λŠ” 루틴이 ν•΄μ œ λ˜ν•œ μ±…μž„μ Έμ•Ό ν•œλ‹€λŠ” 것이닀, -169p
μ§€μ—­μ μœΌλ‘œ ν–‰λ™ν•˜λΌ.

[27. ν—€λ“œλΌμ΄νŠΈλ₯Ό μ•žμ„œκ°€μ§€ 말라]
μš°λ¦¬λŠ” λ„ˆλ¬΄ λ¨Ό λ―Έλž˜λŠ” λ‚΄λ‹€λ³Ό 수 μ—†κ³ , μ •λ©΄μ—μ„œ λ²—μ–΄λ‚œ 곳일수둝 더 μ–΄λ‘‘λ‹€. 
μž‘μ€ 단계듀을 λ°Ÿμ•„λΌ. μ–Έμ œλ‚˜. 더 λ‹žν–‰ν•˜κΈ° 전에 ν”Όλ“œλ°±μ„ ν™•μΈν•˜κ³  μ‘°μ •ν•˜λΌ. ν”Όλ“œλ°±μ˜ λΉˆλ„λ₯Ό μ—¬λŸ¬λΆ„μ˜ μ œν•œ 속도라고 μƒκ°ν•˜λΌ.
ν”Όλ“œλ°± : μ—¬λŸ¬λΆ„μ˜ 행동을 λ…λ¦½μ μœΌλ‘œ ν™•μ¦ν•˜κ±°λ‚˜ λ°˜μ¦ν•˜λŠ” 것이라면 λͺ¨λ‘ ν”Όλ“œλ°±μ΄λ‹€. -178p
μ˜ˆμ–Έν•˜μ§€ 말라. λŒ€λΆ€λΆ„μ˜ 경우 내일은 였늘과 거의 같을 것이닀. ν•˜μ§€λ§Œ ν™•μ‹ ν•˜μ§€λŠ” 말라. -180p

2. κΆκΈˆν•œ λ‚΄μš© κ³Ό 잘 μ΄ν•΄λ˜μ§€ μ•Šμ€ λ‚΄μš©μ— λŒ€ν•œ 정리

@DBC κ΅¬ν˜„

728x90
λ°˜μ‘ν˜•