πŸ’»μš©λ‡½ 개발 λ…ΈνŠΈπŸ’»
article thumbnail
λ°˜μ‘ν˜•

Clean Code TIL Day 17,18

1. Day 17, 18

πŸ”– 였늘 읽은 λ²”μœ„ :  9μž₯ λ‹¨μœ„ ν…ŒμŠ€νŠΈ(p.153 ~ p.170)


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

  • TDD 법칙 μ„Έ 가지(p.155)
    • 첫째 법칙: μ‹€νŒ¨ν•˜λŠ” λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•  λ•ŒκΉŒμ§€ μ‹€μ œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜μ§€ μ•ŠλŠ”λ‹€.
    • λ‘˜μ§Έ 법칙: μ»΄νŒŒμΌμ€ μ‹€νŒ¨ν•˜μ§€ μ•ŠμœΌλ©΄μ„œ 싀행이 μ‹€νŒ¨ν•˜λŠ” μ •λ„λ‘œλ§Œ λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•œλ‹€.
    • μ…‹μ§Έ 법칙: ν˜„μž¬ μ‹€νŒ¨ν•˜λŠ” ν…ŒμŠ€νŠΈλ₯Ό 톡과할 μ •λ„λ‘œλ§Œ μ‹€μ œ μ½”λ“œλ₯Ό μž‘μ„±ν•œλ‹€.
  • ν…ŒμŠ€νŠΈ μ½”λ“œκ°€ λ³΅μž‘ν• μˆ˜λ‘ μ‹€μ œ μ½”λ“œλ₯Ό μ§œλŠ” μ‹œκ°„λ³΄λ‹€ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό μΆ”κ°€ν•˜λŠ” μ‹œκ°„μ΄ 더 걸리기 십상이닀. μ‹€μ œ μ½”λ“œλ₯Ό λ³€κ²½ν•΄ κΈ°μ‘΄ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€κ°€ μ‹€νŒ¨ν•˜κΈ° μ‹œμž‘ν•˜λ©΄, μ§€μ €λΆ„ν•œ μ½”λ“œλ‘œ 인해, μ‹€νŒ¨ν•˜λŠ” ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό 점점 ν†΅κ³Όμ‹œν‚€κΈ° μ–΄λ €μ›Œμ§„λ‹€.(p.156)
  • ν…ŒμŠ€νŠΈ μ½”λ“œλŠ” μ‹€μ œ μ½”λ“œ λͺ»μ§€μ•Šκ²Œ μ€‘μš”ν•˜λ‹€.(p.157)
  • μ½”λ“œμ— μœ μ—°μ„±, μœ μ§€λ³΄μˆ˜μ„±, μž¬μ‚¬μš©μ„±μ„ μ œκ³΅ν•˜λŠ” λ²„νŒ€λͺ©μ΄ λ°”λ‘œ λ‹¨μœ„ ν…ŒμŠ€νŠΈλ‹€. μ΄μœ λŠ” λ‹¨μˆœν•˜λ‹€. ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€κ°€ 있으면 변경이 두렡지 μ•ŠμœΌλ‹ˆκΉŒ!(p.157)
  • ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€κ°€ μ—†λ‹€λ©΄ λͺ¨λ“  변경이 μž μ •μ μΈ 버그닀.(p.157)
  • ν…ŒμŠ€νŠΈ μ½”λ“œκ°€ μ§€μ €λΆ„ν• μˆ˜λ‘ μ‹€μ œ μ½”λ“œλ„ 지저뢄해진닀. κ²°κ΅­ ν…ŒμŠ€νŠΈ μ½”λ“œλ₯Ό μžƒμ–΄λ²„λ¦¬κ³  μ‹€μ œ μ½”λ“œλ„ 망가진닀.(p.157)
  • λŒ€μ²΄λ‘œ λ‚˜λŠ” 단일 assertλ₯Ό μ§€μ›ν•˜λŠ” ν•΄λ‹Ή λΆ„μ•Ό ν…ŒμŠ€νŠΈ μ–Έμ–΄λ₯Ό λ§Œλ“€λ € λ…Έλ ₯ν•œλ‹€. ν•˜μ§€λ§Œ λ•Œλ‘œλŠ” μ£Όμ € 없이 ν•¨μˆ˜ ν•˜λ‚˜μ— μ—¬λŸ¬ assert 문을 넣기도 ν•œλ‹€. 단지 assert λ¬Έ κ°œμˆ˜λŠ” μ΅œλŒ€ν•œ 쀄여야 μ’‹λ‹€λŠ” 생각이닀.(p.165)
  • κ°€μž₯ 쒋은 κ·œμΉ™μ€ "κ°œλ… λ‹Ή assert λ¬Έ 수λ₯Ό μ΅œμ†Œλ‘œ 쀄여라"와 "ν…ŒμŠ€νŠΈ ν•¨μˆ˜ ν•˜λ‚˜λŠ” κ°œλ… ν•˜λ‚˜λ§Œ ν…ŒμŠ€νŠΈν•˜λΌ"라 ν•˜κ² λ‹€.(p.167)
  • κΉ¨λ—ν•œ ν…ŒμŠ€νŠΈλŠ” λ‹€μŒ λ‹€μ„― 가지 κ·œμΉ™μ„ λ”°λ₯΄λŠ”데, 각 κ·œμΉ™μ—μ„œ 첫 κΈ€μžλ₯Ό λ”°μ˜€λ©΄ FIRSTκ°€ λœλ‹€.(p.167 ~ p.168)
    • λΉ λ₯΄κ²Œ(Fast): ν…ŒμŠ€νŠΈλŠ” 빨라야 ν•œλ‹€.
    • λ…λ¦½μ μœΌλ‘œ:(Independent): 각 ν…ŒμŠ€νŠΈλŠ” μ„œλ‘œ μ˜μ‘΄ν•˜λ©΄ μ•ˆ λœλ‹€.
    • 반볡 κ°€λŠ₯ν•˜κ²Œ(Repeatable): ν…ŒμŠ€νŠΈλŠ” μ–΄λ–€ ν™˜κ²½μ—μ„œλ„ 반볡 κ°€λŠ₯ν•΄μ•Ό ν•œλ‹€.
    • μžκ°€ κ²€μ¦ν•˜λŠ”(Self-Validating): ν…ŒμŠ€νŠΈλŠ” λΆ€μšΈ κ°’μœΌλ‘œ κ²°κ³Όλ₯Ό λ‚΄μ•Ό ν•œλ‹€.
    • μ μ‹œμ—(Timely): λ‹¨μœ„ ν…ŒμŠ€νŠΈλŠ” ν…ŒμŠ€νŠΈν•˜λ €λŠ” μ‹€μ œ μ½”λ“œλ₯Ό κ΅¬ν˜„ν•˜κΈ° 직전에 κ΅¬ν˜„λ‹€.
  • ν…ŒμŠ€νŠΈ μ½”λ“œκ°€ λ°©μΉ˜λ˜μ–΄ 망가지면 μ‹€μ œ μ½”λ“œλ„ 망가진닀. ν…ŒμŠ€νŠΈ μ½”λ“œλ₯Ό κΉ¨λ—ν•˜κ²Œ μœ μ§€ν•˜μž.(p.168)

1.2. πŸ€” μ˜€λŠ˜ 읽은 μ†Œκ°κ³Ό λ– μ˜€λ₯΄λŠ” 생각

이 뢀뢄을 읽기 μ „κΉŒμ§€ TDDλΌλŠ” 말만 듀어보고 μ‹€μ œλ‘œ TDDκ°€ 무엇인지 μ™œ ν•΄μ•Ό ν•˜λŠ”μ§€ λͺ¨λ₯΄κ³  μžˆμ—ˆλ‹€.

직접 λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό ν•΄λ³Έ 적이 μ—†μ–΄μ„œ μ½”λ“œ 예제λ₯Ό 봀을 λ•Œ μ–΄λ–€ μ‹μœΌλ‘œ μ½”λ“œκ°€ λŒμ•„κ°€λŠ” 건지 μ™„λ²½ν•˜κ²Œ μ΄ν•΄ν•˜μ§€λŠ” λͺ»ν–ˆμ§€λ§Œ, ν…ŒμŠ€νŠΈ μ½”λ“œλ₯Ό μž‘μ„±ν•˜κ²Œ 되면 μš°λ¦¬κ°€ κ΅¬ν˜„ν•  κΈ°λŠ₯을 λͺ…ν™•ν•˜κ²Œ μ•Œ 수 μžˆμ„λΏλ”λŸ¬ μœ μ§€λ³΄μˆ˜κΉŒμ§€ μ™„λ²½ν•˜κ²Œ ν•΄λ‚Ό 수 μžˆλ‹€λŠ” κ±Έ μ•Œκ²Œ λ˜μ—ˆκ³  거의 ν•„μˆ˜λΌκ³  생각이 λ˜μ—ˆλ‹€.

λ‹€μŒ ν”„λ‘œμ νŠΈλ₯Ό ν•  λ•ŒλŠ” 이 μ±…μ˜ κ·œμΉ™λ“€μ„ μ μš©ν•΄μ„œ ν…ŒμŠ€νŠΈ μ½”λ“œλ„ ν•œλ²ˆ κΌ­ μž‘μ„±ν•΄ 보고 μ‹Άλ‹€.

그리고 ν…ŒμŠ€νŠΈ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” μŠ΅κ΄€μ„ λ“€μ—¬μ„œ ν…ŒμŠ€νŠΈ μ½”λ“œ μ—†μ΄λŠ” κ°œλ°œμ„ ν•  수 없을 μ •λ„λ‘œ μ μ‘ν•˜κ³  μ‹Άκ³  적응할 것이닀.

1.3. πŸ”Ž κΆκΈˆν•œ λ‚΄μš©μ΄ μžˆκ±°λ‚˜, 잘 μ΄ν•΄λ˜μ§€ μ•ŠλŠ” λ‚΄μš©

x

1.3.1. μ†Œκ° 3쀄 μš”μ•½

  • ν…ŒμŠ€νŠΈ μ½”λ“œλŠ” μ‹€μ œ μ½”λ“œ λͺ»μ§€μ•Šκ²Œ μ€‘μš”ν•˜λ‹€.
  • ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€κ°€ μ—†λ‹€λ©΄ λͺ¨λ“  변경이 μž μ •μ μΈ 버그닀.
  • κΉ¨λ—ν•œ ν…ŒμŠ€νŠΈ μ½”λ“œλŠ” FIRST κ·œμΉ™μ„ λ”°λ₯Έλ‹€.
λ°˜μ‘ν˜•
profile

πŸ’»μš©λ‡½ 개발 λ…ΈνŠΈπŸ’»

@μš©λ‡½

ν¬μŠ€νŒ…μ΄ μ’‹μ•˜λ‹€λ©΄ "μ’‹μ•„μš”β€οΈ" λ˜λŠ” "κ΅¬λ…πŸ‘πŸ»" ν•΄μ£Όμ„Έμš”!