undefined

1μž₯. κΉ¨λ—ν•œ μ½”λ“œ

μ½”λ“œκ°€ μ‘΄μž¬ν•˜λ¦¬λΌ

μ½”λ“œμ˜ μ€‘μš”μ„±κ³Ό 역할을 κ°•μ‘°ν•œλ‹€.

  • ν”„λ‘œκ·Έλž˜λ°μ΄λž€, 기계가 μ‹€ν–‰ν•  μ •λ„λ‘œ μƒμ„Έν•˜κ²Œ μš”κ΅¬μ‚¬ν•­μ„ λͺ…μ‹œν•˜λŠ” μž‘μ—…
  • μ½”λ“œλž€, ν”„λ‘œκ·Έλž˜λ°μœΌλ‘œ μš”κ΅¬μ‚¬ν•­μ„ λͺ…μ‹œν•œ κ²°κ³Ό

ꢁ극적으둜 μ½”λ“œλŠ” μš”κ΅¬μ‚¬ν•­μ„ ν‘œν˜„ν•˜λŠ” μ–Έμ–΄

λ‚˜μœ μ½”λ“œ

λ‚˜μœ μ½”λ“œ, 즉 κΉ¨λ—ν•˜κ²Œ μ •λ¦¬λ˜μ§€ λͺ»ν•œ μ½”λ“œμ˜ 영ν–₯을 κΈ°μˆ ν•œλ‹€.

이 파트λ₯Ό μ½μœΌλ©΄μ„œ ꡉμž₯히 곡감이 κ°”λ‹€. 개발자라면 λˆ„κ΅¬λ‚˜ ν•œ λ²ˆμ”© λŠκ»΄λ΄€μ„ 고행을 톡해 μ™œ 클린 μ½”λ“œκ°€ μ€‘μš”ν•œ 지 ν•œ 번 더 κ°•μ‘°ν•œλ‹€.

λ‚˜μ€‘μ€ κ²°μ½” μ˜€μ§€ μ•ŠλŠ”λ‹€

μ‹œκ°„μ— 쫓기닀보면 ‘일단 λ™μž‘λ§Œ ν•˜λ„λ‘ 짜고, μ½”λ“œλŠ” λ‚˜μ€‘μ— μ •λ¦¬ν•˜μž’λΌλŠ” μœ ν˜Ήμ— 빠질 λ•Œκ°€ μžˆλ‹€.

μ €μžλŠ” λ₯΄λΈ”λž‘μ˜ 법칙에 λΉ—λŒ€μ–΄ 이λ₯Ό λ‚ μΉ΄λ‘­κ²Œ κΌ¬μ§‘λŠ”λ‹€.

κ²°κ΅­ ν΄λ¦°ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 원칙을 깊이 μƒˆκ²¨λ†“λŠ” 것이 μ€‘μš”ν•˜λ‹€.

λ‚˜μœ μ½”λ“œλŠ” νŒ€μ˜ 생산성을 λ–¨μ–΄νŠΈλ¦°λ‹€.

κ°„λ‹¨ν•œ μ½”λ“œ 변경에도 μ–½νžˆκ³  섀킨 μ½”λ“œλ₯Ό ν•΄λ…ν•˜λŠλΌ μ‹œκ°„μ΄ 였래 걸리게 λœλ‹€. 또, μ½”λ“œλ₯Ό λ³€κ²½ν•œ κ²ƒμ˜ μ‚¬μ΄λ“œμ΄νŽ™νŠΈκ°€ μ–Έμ œ μ–΄λ””μ„œ λ‚˜νƒ€λ‚  지 μ˜ˆμΈ‘ν•  수 μ—†λ‹€λŠ” 것은 μ—μžμΌν•œ μ‘°μ§μ—μ„œ 치λͺ…적이닀.

κ²°κ΅­ μš”κ΅¬μ‚¬ν•­μ— μ‹ μ†ν•˜κ²Œ λŒ€μ‘ν•  수 μžˆλŠ” νž˜μ€, μ–Έμ œλ‚˜ μ½”λ“œλ₯Ό κΉ¨λ—ν•˜κ²Œ μœ μ§€ν•˜λŠ” μŠ΅κ΄€μ΄λ‹€.

λ‚˜μœ μ½”λ“œλŠ” μ „μ μœΌλ‘œ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ μ±…μž„μ΄λ‹€.

λ‚˜μœ μ½”λ“œμΈ 쀄 μ•Œλ©΄μ„œ μ—¬λŸ¬κ°€μ§€ ν•‘κ³„λ‘œ ν•©λ¦¬ν™”ν•œ 적이 μžˆλ‹€. 주둜 κ°‘μžκΈ° μš”κ΅¬μ‚¬ν•­μ΄ λ’€μ§‘ν˜€μ„œ, λ˜λŠ” 마감일이 μ΄‰λ°•ν•΄μ„œ.

ν•˜μ§€λ§Œ μ–΄λ–€ 상황이든 쒋은 μ½”λ“œλ₯Ό μ‚¬μˆ˜ν•˜λŠ” 일은 μ „μ μœΌλ‘œ ν”„λ‘œκ·Έλž˜λ¨Έλ“€μ˜ μ±…μž„μ΄μž μ˜λ¬΄μ΄λ‹€.

μ–Έμ œλ‚˜ 이 μ±…μž„κ°μ„ μžƒμ§€ μ•ŠλŠ” κ°œλ°œμžκ°€ λ˜μ–΄μ•Όν•œλ‹€.

κΉ¨λ—ν•œ μ½”λ“œ

6λͺ…μ˜ μ €λͺ…ν•œ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ μž…μ„ 빌렀 κΉ¨λ—ν•œ μ½”λ“œλž€ 무엇인지 μ•Œμ•„λ³Έλ‹€.

λΉ„μ•Όλ„€ 슀트둭슀트룹

  • 논리 간단해야 버그가 μˆ¨μ–΄λ“€μ§€ λͺ»ν•œλ‹€.
  • μ˜μ‘΄μ„±μ„ 쀄여야 μœ μ§€λ³΄μˆ˜κ°€ μ‰¬μ›Œμ§„λ‹€.
  • 였λ₯˜λŠ” λͺ…λ°±ν•œ μ „λž΅μ— μ˜κ±°ν•΄ μ² μ €νžˆ μ²˜λ¦¬ν•œλ‹€.
  • μ„±λŠ₯을 졜적으둜 μœ μ§€ν•œλ‹€.
  • κΉ¨λ—ν•œ μ½”λ“œλŠ” ν•œκ°€μ§€λ₯Ό μ œλŒ€λ‘œ ν•œλ‹€.

λ‚˜μœ μ½”λ“œλŠ” λ‚˜μœ μ½”λ“œλ₯Ό μœ ν˜Ήν•˜λ―€λ‘œ 항상 κΉ¨λ—ν•œ μƒνƒœλ₯Ό μœ μ§€ν•΄μ•Ό ν•œλ‹€.

κΉ¨λ—ν•œ μ½”λ“œλŠ” ν•œ 가지 λ‘œμ§μ„ μ œλŒ€λ‘œ κ΅¬ν˜„ν•œ ‘κ°„λ‹¨ν•œ’ μ½”λ“œμ΄λ©΄μ„œλ„, κ·Έ μ•ˆμ€ κΌΌκΌΌν•˜κ²Œ μ²˜λ¦¬λ˜μ–΄μžˆμ–΄μ•Ό ν•œλ‹€.


κ·Έλ ˆλ”” λΆ€μ°¨

  • κΉ¨λ—ν•œ μ½”λ“œλŠ” λ‹¨μˆœν•˜κ³  직접적이닀.
  • κΉ¨λ—ν•œ μ½”λ“œλŠ” 잘 μ“΄ λ¬Έμž₯처럼 μ½νžŒλ‹€.
  • κΉ¨λ—ν•œ μ½”λ“œλŠ” μ„€κ³„μžμ˜ μ˜λ„λ₯Ό λΆ„λͺ…νžˆ λ‚˜νƒ€λ‚Έλ‹€.

κ·Έλ ˆλ”” λΆ€μ°¨λŠ” 가독성을 κ°•μ‘°ν•œλ‹€.

‘μ½”λ“œκ°€ μ‘΄μž¬ν•˜λ¦¬λΌ’ νŒŒνŠΈμ—μ„œ μ½”λ“œλŠ” μš”κ΅¬μ‚¬ν•­μ„ ν‘œν˜„ν•˜λŠ” 언어라 ν–ˆλ‹€.

같은 λ§₯락으둜 μœ„ λ¬Έμž₯λ“€μ—μ„œ ‘κΉ¨λ—ν•œ μ½”λ“œ’λ₯Ό ‘μš”κ΅¬μ‚¬ν•­’으둜 λ°”κΏ”μ„œ 이해해도 λœλ‹€.

μ½”λ“œ 속 μ„€κ³„μžμ˜ μ˜λ„λ₯Ό μ–΄λ–€ κ°œλ°œμžκ°€ 읽어도 λ˜‘κ°™μ΄ 해석될 수 μžˆλ„λ‘ μ§œλŠ” 것이 κΉ¨λ—ν•œ μ½”λ“œλΌκ³  μ΄ν•΄ν–ˆλ‹€.


큰 데이브 ν† λ§ˆμŠ€

  • κΉ¨λ—ν•œ μ½”λ“œλŠ” μž‘μ„±μžκ°€ μ•„λ‹Œ μ‚¬λžŒλ„ 읽기 쉽고 고치기 쉽닀
  • λ‹¨μœ„ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ™€ 인수 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€κ°€ μ‘΄μž¬ν•œλ‹€.
  • νŠΉμ • λͺ©μ μ„ λ‹¬μ„±ν•˜λŠ” 방법은 ν•˜λ‚˜λ§Œ μ œκ³΅ν•œλ‹€.
  • μ΅œμ†Œν•œμ˜ μ˜μ‘΄μ„±, λͺ…ν™•νžˆ μ •μ˜λœ μ˜μ‘΄μ„±

큰 데이브 ν† λ§ˆμŠ€λ„ 가독성과 λ”λΆˆμ–΄ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό κ°•μ‘°ν•œλ‹€.

가독성을 ‘λ¬Έν•™μ μœΌλ‘œ ν‘œν˜„ν•˜λŠ” 것’이라 λΉ„μœ ν•œ 것이 λ§ˆμŒμ— μ™€λ‹Ώμ•˜λ‹€.


마이클 νŽ˜λ”μŠ€

  • κΉ¨λ—ν•œ μ½”λ“œλŠ” 주의 깊게 μ§°λ‹€λŠ” λŠλ‚Œμ„ μ€€λ‹€.

λΉ„μ•Όλ„€ 슀트둭슀트룹이 λ§ν–ˆλ˜ ‘였λ₯˜λŠ” λͺ…λ°±ν•œ μ „λž΅μ— μ˜κ±°ν•΄ μ² μ €νžˆ μ²˜λ¦¬ν•œλ‹€’에 λ‚΄ν¬λœ μ˜λ―Έμ™€ κ°™λ‹€.

μœ„μ— μ–ΈκΈ‰ν•œ λͺ¨λ“  ν”„λ‘œκ·Έλž˜λ¨Έλ“€μ΄ λ‹¨μˆœν•˜κ³  κ°„λ‹¨ν•œ μ½”λ“œλ₯Ό κ°•μ‘°ν–ˆμ§€λ§Œ, κ·Έ 것이 μ ˆλŒ€ μ„Έμ„Έν•˜μ§€ μ•Šλ‹€λŠ” 뜻이 μ•„λ‹ˆλž€ κ±Έ μ£Όμ˜ν•΄μ•Όν•œλ‹€.


λ‘  μ œν”„λ¦¬μŠ€

  • μ½”λ“œμ— 쀑볡을 쀄인닀.
  • 의미 μžˆλŠ” 이름을 μ‚¬μš©ν•œλ‹€. = ν‘œν˜„λ ₯을 높인닀.
  • κ°„λ‹¨ν•œ 좔상화λ₯Ό κ³ λ €ν•œλ‹€.

λ‘  μ œν”„λ¦¬μŠ€κ°€ λ§ν•˜λŠ” 클린 μ½”λ“œλŠ” κ²°κ΅­ μ½”λ“œμ˜ μ˜λ„λ₯Ό μ •ν™•ν•˜κ²Œ ν‘œν˜„ν•˜λŠ” 것이라고 ν•΄μ„ν–ˆλ‹€.

μ½”λ“œκ°€ μ€‘λ³΅λ¬λ‹€λŠ” 것은 아이디어λ₯Ό μ œλŒ€λ‘œ ν‘œν˜„ν•˜μ§€ λͺ»ν•œλ‹€λŠ” 증거이며,

ν‘œν˜„λ ₯은 각 μ½”λ“œκ°€ ν•˜λŠ” 일을 λͺ…ν™•νžˆ ν‘œν˜„ν•˜λŠ” 것이닀. μ—¬κΈ°μ—λŠ” κ°μ²΄λ‚˜ λ©”μ„œλ“œκ°€ ν•œ 가지 일만 ν•˜λ„λ‘ λ§Œλ“œλŠ” 것이 ν¬ν•¨λœλ‹€.

λ˜ν•œ μΆ”μƒν™”λ‘œ μ½”λ“œλ₯Ό κ°μ‹Έμ„œ ν•΄κ²°ν•˜λ €λŠ” μ§„μ§œ λ¬Έμ œμ—λ§Œ 집쀑할 수 μžˆλ„λ‘ ν•΄μ€€λ‹€.


μ›Œλ“œ 컀닝햄

  • κΉ¨λ—ν•œ μ½”λ“œλŠ” μ˜ˆμƒλŒ€λ‘œ λ™μž‘ν•œλ‹€.
  • κΉ¨λ—ν•œ μ½”λ“œλŠ” 문제λ₯Ό ν’€κΈ° μœ„ν•œ μ–Έμ–΄λ‘œ 보인닀.

μ˜ˆμΈ‘ν•œλŒ€λ‘œ λ™μž‘ν•˜λŠ” μ½”λ“œλŠ” μ•žμ„  ν”„λ‘œκ·Έλž˜λ¨Έλ“€μ΄ λ§ν•œ λͺ…λ°±ν•˜κ³  λ‹¨μˆœν•œ μ½”λ“œμ™€ 일λ§₯μƒν†΅ν•œλ‹€.


μ €λͺ…ν•œ ν”„λ‘œκ·Έλž˜λ¨Έλ“€μ΄ λ‹€μ–‘ν•œ ν‘œν˜„μœΌλ‘œ 클린 μ½”λ“œλ₯Ό ν‘œν˜„ν•˜κ³  μžˆμ§€λ§Œ κ³΅ν†΅μ μœΌλ‘œ λ§ν•˜κ³  μžˆλŠ” 것은 λ‹€μŒμœΌλ‘œ 정리할 수 μžˆμ„ 것 κ°™λ‹€.

클린 μ½”λ“œλŠ”

  • λͺ…λ°±ν•˜λ‹€
  • λ‹¨μˆœν•˜λ‹€
  • κΌΌκΌΌν•˜λ‹€
  • 읽기 쉽닀

이 책을 읽을 λ•Œ, μ–΄λ–€ λ°©μ‹μœΌλ‘œ μ½”λ“œλ₯Ό 이런 클린 μ½”λ“œλ‘œ λ§Œλ“€μ–΄ λ‚˜κ°€λŠ” 지에 집쀑해야 될 것이닀.

μš°λ¦¬λŠ” μ €μžλ‹€

λ§ˆμ§€λ§‰μœΌλ‘œ μš°λ¦¬μ—κ² μ½”λ“œμ˜ μ €μžλ‘œμ„œ μ±…μž„μ΄ μžˆμŒμ„ μžŠμ§€ 말아야 ν•  것이닀.

μš°λ¦¬λŠ” λ‹€λ₯Έ μ‚¬λžŒμ΄ 읽기 νŽΈν•˜λ„λ‘ μ½”λ“œλ₯Ό μž‘μ„±ν•  μ˜λ¬΄κ°€ 있고, 보이슀카우트 원칙에 따라 항상 μ½”λ“œλ₯Ό κΉ¨λ—ν•˜κ²Œ μœ μ§€ν•  μ˜λ¬΄κ°€ μžˆλ‹€.

κ·Έ 의무λ₯Ό λ‹€ν•˜κΈ° μœ„ν•΄ 클린 μ½”λ“œλž€ 무엇이고 μ–΄λ–»κ²Œ 더 κΉ¨λ—ν•˜κ²Œ λ§Œλ“€ 수 μžˆμ„ 지 항상 κ³ λ―Όν•΄μ•Ό ν•  것이닀.