Books

[Clean Code (ν΄λ¦°μ½”λ“œ)] ch.1 κΉ¨λ—ν•œ μ½”λ“œ

DAHLIA CHOI 2022. 11. 30. 02:58

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

80λ…„λŒ€ ν›„λ°˜ ν‚¬λŸ¬ 앱을 κ΅¬ν˜„ν•œ νšŒμ‚¬κ°€ μžˆμ—ˆλ‹€. μ΄ˆλ°˜μ—” ν₯ν–‰ν•˜λŠ” λ“― ν–ˆμœΌλ‚˜ 점점 μ œν’ˆ μΆœμ‹œ 일이 λŠ¦μΆ°μ§€κ³  이전 버그가 λ‹€μŒ 버전에도 λ‚¨μ•„μ•˜μ—ˆμŒ + ν”„λ‘œκ·Έλž¨ μ‹œλ™ μ‹œκ°„ 증가 + ν”„λ‘œκ·Έλž¨ λ‹€μš΄ 횟수 증가 κ²°κ΅­, νšŒμ‚¬λŠ” λ§ν–ˆλ‹€.

πŸ‘‰ Why? λ‚˜μœ μ½”λ“œ λ•Œλ¬Έμ΄λ‹€.

 

λ₯΄λΈ”λž‘μ˜ 법칙

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

→ μ•ˆ λŒμ•„κ°€λŠ” ν”„λ‘œκ·Έλž¨λ³΄λ‹€ λŒμ•„κ°€λŠ” μ“°λ ˆκΈ°λ‘œ μœ„μ•ˆμ‚ΌμœΌλ©° λ‚˜μ€‘μ— μ •λ¦¬ν•˜κ² λ‹€λŠ” 생각은 λ²„λ¦¬μž! 

 

λ‚˜μœ μ½”λ“œλ‘œ 치λ₯΄λŠ” λŒ€κ°€

"λ‚˜μœ μ½”λ“œκ°€ μŒ“μ„ 수둝 νŒ€ 생산성은 떨어진닀. κ·ΈλŸ¬λ‹€κ°€ λ§ˆμΉ¨λ‚΄ 0에 κ·Όμ ‘ν•œλ‹€"

 

μ›λŒ€ν•œ μž¬μ„€κ³„μ˜ 꿈

μ‹œκ°„μ„ λ“€μ—¬ κΉ¨λ—ν•œ μ½”λ“œλ₯Ό λ§Œλ“œλŠ” λ…Έλ ₯이 λΉ„μš©μ„ μ ˆκ°ν•˜λŠ” 방법일 뿐만 μ•„λ‹ˆλΌ μ „λ¬Έκ°€λ‘œμ„œ μ‚΄μ•„λ‚¨λŠ” κΈΈμ΄λΌλŠ” 사싀을 μΈμ •ν•˜λΌ

 

νƒœλ„

ν”„λ‘œκ·Έλž˜λ¨Έκ°€ λ‚˜μœ μ½”λ“œλ₯Ό μž‘μ„±ν•  수 밖에 μ—†μ—ˆλ˜ μ΄μœ λŠ” λ¬΄μ—‡μΌκΉŒ?

λ©μ²­ν•œ κ΄€λ¦¬μž, μ‘°κΈ‰ν•œ 고객, μ“Έλͺ¨μ—†λŠ” λΆ€μ„œ, μ΄‰λ°•ν•œ 일정

μœ„ 4개 λͺ¨λ‘ μ•„λ‹ˆλ‹€. μ΄μœ λŠ” ν”„λ‘œκ·Έλž˜λ¨Έμ—κ²Œ μžˆλ‹€.

κ΄€λ¦¬μžμ™€ λ§ˆμΌ€νŒ…μ€ 약속과 곡약을 λ‚΄κ±Έλ©° μš°λ¦¬μ—κ²Œ 정보λ₯Ό κ΅¬ν•œλ‹€.

μš°λ¦¬μ—κ²Œ 정보λ₯Ό κ΅¬ν•˜μ§€ μ•Šλ”λΌλ„ μš°λ¦¬λŠ” 적극적으둜 정보λ₯Ό μ œκ³΅ν•΄μ•Ό ν•œλ‹€.

 

πŸ‘¨ μ‚¬μš©μž - μš”κ΅¬μ‚¬ν•­μ„ λ‚΄λ†“μœΌλ©° ν”„λ‘œκ·Έλž˜λ¨Έμ—κ²Œ ν˜„μ‹€μ„± 자문

πŸ‘¨ ν”„λ‘œμ νŠΈ κ΄€λ¦¬μž - 일정을 작으며 ν”„λ‘œκ·Έλž˜λ¨Έμ—κ²Œ 도움 μš”μ²­

→ λ”°λΌμ„œ μš°λ¦¬λŠ” μ»€λ‹€λž€ μ±…μž„μ„ 가지고 μžˆλ‹€.

 

일정에 쫒기더라도 λŒ€λ‹€μˆ˜ κ΄€λ¦¬μžλŠ” 쒋은 μ½”λ“œλ₯Ό μ›ν•œλ‹€. λ‚˜μœ μ½”λ“œμ˜ μœ„ν—˜μ„ μ΄ν•΄ν•˜μ§€ λͺ»ν•˜λŠ” κ΄€λ¦¬μž 말을 그댈 λ”°λ₯΄λŠ” 행동은 전문가닡지 λͺ»ν•˜λ‹€.

 

μ›μ΄ˆμ  λ‚œμ œ

λ‚˜μœ μ½”λ“œκ°€ 업무 속도λ₯Ό λŠ¦μΆ˜λ‹€λŠ” 사싀을 μ•ˆλ‹€. ν•˜μ§€λ§Œ κΈ°ν•œμ„ λ§žμΆ”λ €λ©΄ λ‚˜μœ μ½”λ“œλ₯Ό μ–‘μ‚°ν•  μˆ˜λ°–μ— μ—†λ‹€κ³  λŠλ‚€λ‹€.

ν•˜μ§€λ§Œ, μ§„μ§œ μ „λ¬Έκ°€λŠ” 두 번째 뢀뢄이 ν‹€λ Έλ‹€λŠ” 것을 μ•ˆλ‹€. λ‚˜μœ μ½”λ“œλ₯Ό μ–‘μ‚°ν•˜λ©΄ κΈ°ν•œμ„ λ§žμΆ”μ§€ λͺ»ν•œλ‹€! !

⭐ κΈ°ν•œμ„ λ§ˆμΆ”λŠ” μœ μΌν•œ 방법은 μ–Έμ œλ‚˜ μ½”λ“œλ₯Ό κΉ¨λ—ν•˜κ²Œ μœ μ§€ν•˜λŠ” μŠ΅κ΄€μ΄λ‹€.

 

κΉ¨λ—ν•œ μ½”λ“œλΌλŠ” 예술?

"κΉ¨λ—ν•œ μ½”λ“œλ₯Ό μ–΄λ–»κ²Œ μž‘μ„±ν• κΉŒ?"

 

κΉ¨λ—ν•œ μ½”λ“œλ₯Ό κ΅¬ν˜„ν•˜λŠ” ν–‰μœ„λŠ” 그림을 κ·Έλ¦¬λŠ” ν–‰μœ„μ™€ λΉ„μŠ·ν•˜λ‹€.

→ 그림을 보면 잘 κ·Έλ ΈλŠ”μ§€ μ—‰λ§μœΌλ‘œ κ·Έλ ΈλŠ”μ§€λ₯Ό μ•Œ 수 μžˆλ‹€. κ·Έλ ‡μ§€λ§Œ 잘 κ·Έλ¦° 그림을 κ΅¬λΆ„ν•œλ‹€κ³  ν•΄μ„œ 그림을 잘 κ·Έλ¦¬λŠ” 것은 μ•„λ‹ˆλ‹€. 즉, κΉ¨λ—ν•œ μ½”λ“œμ™€ λ‚˜μœ μ½”λ“œλ₯Ό κ΅¬λΆ„ν•œλ‹€κ³  ν•΄μ„œ κΉ¨λ—ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μžˆλŠ” 건 μ•„λ‹ˆλ‹€.

 

μ½”λ“œκ°κ°μ΄ μ€‘μš”ν•˜λ‹€.

‘μ½”λ“œκ°κ°’이 μžˆλŠ” ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” λ‚˜μœ λͺ¨λ“ˆμ„ 보면 쒋은 λͺ¨λ“ˆλ‘œ κ°œμ„ ν•  λ°©μ•ˆμ„ λ– μ˜¬λ¦°λ‹€.

졜고의 λ°©μ•ˆμ„ μ„ νƒν•œ ν›„ μ—¬κΈ°μ„œ κ±°κΈ°κΉŒμ§€ μ΄λ™ν•˜λŠ” 경둜λ₯Ό κ³„νšν•œλ‹€.

⭐ κΉ¨λ—ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” 빈 μΊ”νΌμŠ€λ₯Ό μš°μ•„ν•œ μž‘ν’ˆμœΌλ‘œ λ°”κΏ”κ°€λŠ” 화가와 κ°™λ‹€.

 

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

λ°”μ•Όλ„€ 슀트둭슀트룹

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

 

그리디 λΆ€μΉ˜

κΉ¨λ—ν•œ μ½”λ“œλŠ” λ‹¨μˆœν•˜κ³  직접적이닀. κΉ¨λ—ν•œ μ½”λ“œλŠ” 잘 μ“΄ λ¬Έμž₯처럼 μ½νžŒλ‹€. κΉ¨λ—ν•œ μ½”λ“œλŠ” κ²°μ½” μ„€κ³„μžμ˜ μ˜λ„λ₯Ό μˆ¨κΈ°μ§€ λͺ»ν•œλ‹€. 였히렀 λͺ…μΎŒν•œ 좔상화와 λ‹¨μˆœν•œ μ œμ–΄λ¬ΈμœΌλ‘œ κ°€λ“ν•˜λ‹€.

→ μ½”λ“œλŠ” 좔츑이 μ•„λ‹ˆλΌ 사싀에 κΈ°λ°˜ν•΄μ•Ό ν•œλ‹€.

λ°˜λ“œμ‹œ ν•„μš”ν•œ λ‚΄μš©λ§Œ λ‹΄μ•„μ•Ό ν•œλ‹€.

 

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

κΉ¨λ—ν•œ μ½”λ“œλŠ” μž‘μ„±μžκ°€ μ•„λ‹Œ μ‚¬λžŒλ„ 읽기 쉽고 고치기 쉽닀. λ‹¨μœ„ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ™€ 인수 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€κ°€ μ‘΄μž¬ν•œλ‹€. κΉ¨λ—ν•œ μ½”λ“œλŠ” 의미 μžˆλŠ” 이름이 λΆ™λŠ”λ‹€. μ˜μ‘΄μ„±μ€ μ΅œμ†Œμ΄λ©° 각 μ˜μ‘΄μ„±μ„ λͺ…ν™•νžˆ μ •μ˜ν•œλ‹€. APIλŠ” λͺ…ν™•ν•˜λ©° μ΅œμ†Œλ‘œ μ€„μ˜€λ‹€.

 

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

κΉ¨λ—ν•œ μ½”λ“œλŠ” μ–Έμ œλ‚˜ λˆ„κ΅°κ°€ 주의 깊게 μ§°λ‹€λŠ” λŠλ‚Œμ„ μ€€λ‹€. 고치렀고 μ‚΄νŽ΄λ΄λ„ λ”±νžˆ 손 댈 곳이 μ—†λ‹€. μž‘μ„±μžκ°€ 이미 λͺ¨λ“  상황을 κ³ λ €ν–ˆμœΌλ―€λ‘œ, κ³ μΉ  ꢁ리λ₯Ό ν•˜λ‹€ 보면 μ–Έμ œλ‚˜ 제자리둜 λŒμ•„μ˜¨λ‹€.

 

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

λͺ¨λ“  ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό ν†΅κ³Όν•œλ‹€. 쀑볡이 μ—†λ‹€. μ‹œμŠ€ν…œ λ‚΄ λͺ¨λ“  섀계 아이디어λ₯Ό ν‘œν˜„ν•œλ‹€. 클래슀, λ©”μ„œλ“œ, ν•¨μˆ˜ 등을 μ΅œλŒ€ν•œ 쀄인닀.

→ 객체가 μ—¬λŸ¬ κΈ°λŠ₯을 μˆ˜ν–‰ν•œλ‹€λ©΄ μ—¬λŸ¬ 객체둜 λ‚˜λˆˆλ‹€.

→ λ©”μ„œλ“œκ°€ μ—¬λŸ¬ κΈ°λŠ₯을 μˆ˜ν–‰ν•œλ‹€λ©΄ λ©”μ„œλ“œ μΆ”μΆœ λ¦¬νŽ™ν„°λ§ 기법을 μ μš©ν•΄ κΈ°λŠ₯을 λͺ…ν™•νžˆ κΈ°μˆ ν•˜λŠ” λ©”μ„œλ“œμ™€ κΈ°λŠ₯을 μ‹€μ œλ‘œ μˆ˜ν–‰ν•˜λŠ” λ©”μ„œλ“œ μ—¬λŸ¬ 개둜 λ‚˜λˆˆλ‹€.

 

μ›Œλ“œ 컀닝햄

μ½”λ“œλ₯Ό μ½μœΌλ©΄μ„œ μ§μž‘ν–ˆλ˜ κΈ°λŠ₯은 각 루틴이 κ·ΈλŒ€λ‘œ μˆ˜ν–‰ν•œλ‹€λ©΄ κΉ¨λ—ν•œ μ½”λ“œμ΄λ‹€. μ½”λ“œκ°€ κ·Έ 문제λ₯Ό ν’€κΈ° μœ„ν•œ μ–Έμ–΄μ²˜λŸΌ 보인닀면 μ•„λ¦„λ‹€μš΄ μ½”λ“œμ΄λ‹€.

→ κΉ¨λ—ν•œ μ½”λ“œλŠ” λ†€λž„μΌμ΄ μ—†μ–΄μ•Ό ν•œλ‹€.

 

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

μ½”λ“œλŠ” μ½”λ“œλ₯Ό μ§œλŠ” μ‹œκ°„λ³΄λ‹€ μ½λŠ” μ‹œκ°„μ— 더 λ§Žμ€ μ‹œκ°„μ„ νˆ¬μžν•˜κ²Œ λœλ‹€.

μƒˆ μ½”λ“œλ₯Ό μ§œλ©΄μ„œ μš°λ¦¬λŠ” λŠμž„ 없이 κΈ°μ‘΄ μ½”λ“œλ₯Ό μ½λŠ”λ‹€. → λ”°λΌμ„œ 읽기 μ‰¬μš΄ μ½”λ“œκ°€ 맀우 μ€‘μš”ν•˜λ‹€.

 

보이슀카우트 κ·œμΉ™

"μΊ ν”„μž₯은 처음 왔을 λ•Œλ³΄λ‹€ 더 κΉ¨λ—ν•˜κ²Œ 해놓고 λ– λ‚˜λΌ."

잘 μ§  μ½”λ“œκ°€ μ „λΆ€λŠ” μ•„λ‹ˆλ‹€. μ‹œκ°„μ΄ μ§€λ‚˜λ„ κΉ¨λ—ν•˜κ²Œ μœ μ§€ν•΄μ•Ό ν•œλ‹€.

ν•œκΊΌλ²ˆμ— λ§Žμ€ μ‹œκ°„κ³Ό λ…Έλ ₯을 νˆ¬μžν•΄ μ½”λ“œλ₯Ό 정리할 ν•„μš”λŠ” μ—†λ‹€. μ•„λž˜ κ²ƒλ“€λ§Œ 해도 μΆ©λΆ„ν•˜λ‹€.

  • λ³€μˆ˜ 이름을 ν•˜λ‚˜λ‘œ κ°œμ„ 
  • 쑰금 κΈ΄ ν•¨μˆ˜λ₯Ό ν•˜λ‚˜λ₯Ό λΆ„ν• 
  • μ•½κ°„μ˜ 쀑볡 제거
  • λ³΅μž‘ν•œ if λ¬Έ ν•˜λ‚˜ 정리

κ²°λ‘ 

κ³΅λΆ€ν•˜μž!!! μ—°μŠ΅ν•˜μž!!!