Skip to content

Latest commit

Β 

History

History
122 lines (72 loc) Β· 5.47 KB

Section1.md

File metadata and controls

122 lines (72 loc) Β· 5.47 KB

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

[ꡬ름 Commit 참석 ν›„κΈ°] β€˜ν΄λ¦° μ½”λ“œβ€™κ°€ μ½”λ“œμ— λŒ€ν•œ 책이 μ•„λ‹Œ 사싀에 λŒ€ν•΄

책을 읽기 μ „, μœ„ μ„Έμ…˜μ„ λ“£κ³  ν›„κΈ°λ₯Ό μž‘μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€. κ°„λž΅ μš”μ•½ν•˜μžλ©΄ ν΄λ¦°μ½”λ“œλ§Œμ΄ 정닡은 μ•„λ‹ˆλΌλŠ” 것이며 κΈ°λ²•μ˜ ꢌ고 μ •λ„λ‘œ μΈμ§€ν•˜κ³  μ½λŠ” 것이 μ’‹λ‹€λŠ” 것을 κΉ¨λ‹¬μ•˜μŠ΅λ‹ˆλ‹€.

λ„μž…

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

  • μ½”λ“œμ˜ 쒅말이 λ‹₯μ³€λ‹€λŠλ‹ˆ, μ½”λ“œλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•œλ‹€λŠλ‹ˆ 해도 μ•žμœΌλ‘œ μ½”λ“œκ°€ μ‚¬λΌμ§ˆ 가망은 μ ˆλŒ€ μ—†λ‹€.
  • μ½”λ“œμ˜ 도움없이 μš”κ΅¬μ‚¬ν•­μ„ μƒμ„Ένžˆ(μ •λ°€νžˆ) ν‘œν˜„ν•  수 μ—†κΈ° λ•Œλ¬Έ.

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

  • μΌ„νŠΈλ°±μ˜ κ΅¬ν˜„νŒ¨ν„΄ : 쒋은 μ½”λ“œκ°€ μ€‘μš”ν•˜λ‹€λŠ” λ‹€μ†Œ λ―Έμ•½ν•œ μ „μ œμ— κΈ°λ°˜ν•œλ‹€
    • 이 책은 이에 λ™μ˜ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • κΈ°ν•œμ„ μ§€ν‚€κΈ°μœ„ν•΄ 마ꡬ작이둜 μž‘μ„±ν•œ λ‚˜μœ μ½”λ“œλŠ” μ΄ˆλ°˜μ—” λΉ λ₯Όμ§€μ–Έμ •, λ‚˜μ€‘μ— 개발 속도λ₯Ό 크게 λ–¨μ–΄λœ¨λ¦°λ‹€.
    • μ–½νžˆκ³  섀킨 μ½”λ“œλ₯Ό ν•΄μ„ν•˜κ³  λ”ν•œλ‹€ β†’ κ°„λ‹¨ν•œ λ³€κ²½ λΆˆκ°€λŠ₯

νƒœλ„

  • 일정이 μ΄‰λ°•ν•΄μ„œ μ œλŒ€λ‘œ ν•  μ‹œκ°„μ΄μ—†λ‹€. λ©μ²­ν•œ κ΄€λ¦¬μžμ™€ μ‘°κΈ‰ν•œ 고객 탓이닀. κ³Όμ—°?
  • κ°œλ°œμžλŠ” ν”„λ‘œμ νŠΈ κ³„νš 과정에 κΉŠμˆ™νžˆ κ΄€μ—¬ν•˜λ―€λ‘œ ν”„λ‘œμ νŠΈ μ‹€νŒ¨, 특히 λ‚˜μœμ½”λ“œλ‘œ μ΄ˆλž˜ν•˜λŠ” μ‹€νŒ¨μ— μ±…μž„μ΄ 크닀.
  • λ‚˜μœ μ½”λ“œμ˜ μœ„ν—˜μ„ μ΄ν•΄ν•˜μ§€ λͺ»ν•˜λŠ” κ΄€λ¦¬μžλ₯Ό κ·ΈλŒ€λ‘œ λ”°λ₯΄λŠ”건 μ „λ¬Έκ°€ 닡지 λͺ»ν•˜λ‹€.

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

  • λ‚˜μœ μ½”λ“œλ₯Ό μ–‘μ‚°ν•˜λ©΄ κΈ°ν•œμ„ λ§žμΆ”μ§€ λͺ»ν•œλ‹€. β†’ 였히렀 μ—‰λ§μΉœμ°½μΈ μƒνƒœλ‘œ 속도가 λŠ¦μ–΄μ§.
  • μ–Έμ œλ‚˜ μ½”λ“œλ₯Ό κΉ¨λ—ν•˜κ²Œ μœ μ§€ν•˜λŠ” μŠ΅κ΄€μ΄ 방법이닀.

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

λ…Έλ ¨ν•œ ν”„λ‘œκ·Έλž˜λ¨Έλ“€μ˜ λ‹€μ–‘ν•œ μ •μ˜κ°€ μ‘΄μž¬ν•œλ‹€.

λΉ„μ•Όλ„€ 슀트둭슀트룹(Bjarne Stroustrup)

λ‚˜λŠ” μš°μ•„ν•˜κ³  효율적인 μ½”λ“œλ₯Ό μ’‹μ•„ν•œλ‹€.

  • μš°μ•„ν•œ μ½”λ“œ : μ™Έμ–‘μ΄λ‚˜ νƒœλ„κ°€ κΈ°ν’ˆ 있고 λ‹¨μ•„ν•˜λ©° 보기에 즐거운 μ½”λ“œ
  • 효율적인 μ½”λ“œ : λ‹¨μˆœ μ†λ„λ§Œμ„ λœ»ν•˜μ§€ μ•ŠμœΌλ©°, CPU의 μžμ›μ„ λ‚­λΉ„ν•˜μ§€ μ•ŠλŠ” μ½”λ“œ

μ„±λŠ₯을 졜적으둜 μœ μ§€ν•΄μ•Ό μ‚¬λžŒλ“€μ΄ μ›μΉ™μ—†λŠ” μ΅œμ ν™”λ‘œ μ½”λ“œλ₯Ό λ§μΉ˜λ €λŠ” μœ ν˜Ήμ— 빠지지 μ•ŠλŠ”λ‹€.

  • λ‚˜μœμ½”λ“œλŠ” λ‚˜μœμ½”λ“œλ₯Ό μœ ν˜Ήν•œλ‹€. κ³ μΉ˜λ©΄μ„œ 였히렀 더 λ‚˜μœ μ½”λ“œλ₯Ό λ§Œλ“ λ‹€.

였λ₯˜λŠ” λͺ…λ°±ν•œ μ „λž΅μ— μ˜κ±°ν•΄ μ² μ €νžˆ μ²˜λ¦¬ν•œλ‹€.

  • μ² μ €ν•˜κ²Œ 였λ₯˜ 처리된 μ½”λ“œ : λ©”λͺ¨λ¦¬ λˆ„μˆ˜, race condition, 일관성 μ—†λŠ” λͺ…λͺ…법 λ“± μ„Έμ„Έν•œ μ‚¬ν•­κΉŒμ§€ κΌΌκΌΌν•˜κ²Œ μ²˜λ¦¬ν•˜λŠ” μ½”λ“œ

κΉ¨λ—ν•œ μ½”λ“œλŠ” ν•œκ°€μ§€λ₯Ό μ œλŒ€λ‘œ ν•œλ‹€.

  • κΉ¨λ—ν•œ μ½”λ“œ : λ„ˆλ¬΄ λ§Žμ€ 일을 ν•˜λ € 애쓰지 말고 ν•œκ°€μ§€ 일에 μ§‘μ€‘ν•˜λŠ” μ½”λ“œ
  • 각 ν•¨μˆ˜μ™€ ν΄λž˜μŠ€μ™€ λͺ¨λ“ˆμ€ μ£Όλ³€ 상황에 ν˜„ν˜Ήλ˜κ±°λ‚˜ μ˜€μ—Όλ˜μ§€ μ•ŠλŠ” 채 ν•œκΈΈλ§Œ 걷자.

κ·Έλž˜λ”” λΆ€μΉ˜(Grady Booch)

κΉ¨λ—ν•œ μ½”λ“œλŠ” 잘 μ“΄ λ¬Έμž₯처럼 μ½νžŒλ‹€.

  • 가독성 : ν•΄κ²°ν•  λ¬Έμ œμ™€ 해법을 λͺ…λ°±νžˆ μ œμ‹œν•˜κ³  ν’€μ–΄μ•Όν•œλ‹€.

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

  • μ½”λ“œλŠ” 사싀에 κΈ°λ°˜ν•˜λ©°, ν•„μš”ν•œ λ‚΄μš©λ§Œ λ‹΄μ•„μ•Όν•œλ‹€.

큰(Big) 데이브 ν† λ§ˆμŠ€(Dave Thomas)

κΉ¨λ—ν•œ μ½”λ“œλŠ” μž‘μ„±μžκ°€ μ•„λ‹Œ μ‚¬λžŒλ„ 읽기 쉽고 고치기 쉽닀.

  • μ‹€μ œλ‘œ 읽기 μ‰¬μš΄μ½”λ“œμ™€ 고치기 μ‰¬μš΄ μ½”λ“œλŠ” λ‹€λ₯΄λ‹€.

λ‹¨μœ„ν…ŒμŠ€νŠΈμΌ€μ΄μŠ€μ™€ μΈμˆ˜ν…ŒμŠ€νŠΈμΌ€μ΄μŠ€κ°€ μ‘΄μž¬ν•œλ‹€.

  • ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€κ°€ μ—†λŠ” μ½”λ“œλŠ” 아무리 가독성이 높아도 κΉ¨λ—ν•˜μ§€ μ•Šλ‹€.

마이클 νŒ¨λ”μŠ€(Michael Feathers)

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

  • κΉ¨λ—ν•œ μ½”λ“œ : μ‹œκ°„μ„ λ“€μ—¬ κΉ”λ”ν•˜κ³  λ‹¨μ •ν•˜κ²Œ μ •λ¦¬ν•œ μ½”λ“œ

λ‘  μ œν”„λ¦¬μŠ€(Ron Jeffries)

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

κ²°λ‘  : 쀑볡 쀄이기, ν•œκΈ°λŠ₯만 μˆ˜ν–‰ν•˜κΈ°, μ œλŒ€λ‘œ ν‘œν˜„(μ˜λ―ΈμžˆλŠ” 이름)ν•˜κΈ°, μž‘κ²Œ μΆ”μƒν™”ν•˜λΌ.

μ›Œλ“œ 컀닝햄(Ward Cunningham)

μ½”λ“œλ₯Ό μ½μœΌλ©΄μ„œ μ§μž‘ν–ˆλ˜ κΈ°λŠ₯을 각 루틴이 κ·ΈλŒ€λ‘œ μˆ˜ν–‰ν•œλ‹€λ©΄ κΉ¨λ—ν•œ μ½”λ“œλΌ λΆˆλŸ¬λ„ λ˜κ² λ‹€.

  • κΉ¨λ—ν•œ μ½”λ“œλŠ” μ½μœΌλ©΄μ„œ λ†€λž„μΌμ΄ μ—†μ–΄μ•Όν•œλ‹€.
  • μ§μž‘ν•œ λŒ€λ‘œ λŒμ•„κ°€λŠ” μ½”λ“œκ°€ κΉ¨λ—ν•œ μ½”λ“œμ΄λ‹€.

κ²°λ‘ 

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

  • μš°λ¦¬λŠ” μƒˆμ½”λ“œλ₯Ό μ§œλ©΄μ„œ λŠμž„μ—†μ΄ κΈ°μ‘΄ μ½”λ“œλ₯Ό μ½λŠ”λ‹€.
  • λ”°λΌμ„œ 읽기 μ‰¬μš΄ μ½”λ“œλŠ” 맀우 μ€‘μš”ν•˜λ©°, 읽기 μ‰½κ²Œ λ§Œλ“€λ©΄ μ§œκΈ°λ„ μ‰¬μ›Œμ§„λ‹€.

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

μΊ ν•‘μž₯은 처음 왔을 λ•Œ 보닀 더 κΉ¨λ—ν•˜κ²Œ 해놓고 λ– λ‚˜λΌ

  • 체크아웃할 λ•Œλ³΄λ‹€ μ’€ 더 κΉ¨λ—ν•œ μ½”λ“œλ₯Ό μ²΄ν¬μΈν•˜μž.
  • λ³€μˆ˜μ΄λ¦„ν•˜λ‚˜λ₯Ό κ°œμ„ ν•˜κ³ , 쑰금 κΈ΄ ν•¨μˆ˜ ν•˜λ‚˜λ₯Ό λΆ„ν• ν•˜κ³ , μ•½κ°„μ˜ 쀑볡을 μ œκ±°ν•˜κ³ , λ³΅μž‘ν•œ if문을 μ •λ¦¬ν•˜μž. 이정도면 μΆ©λΆ„.

μ‹œκ°„μ΄ 지날 수둝 μ½”λ“œκ°€ μ’‹μ•„μ§€λŠ” ν”„λ‘œμ νŠΈλ₯Ό λ§Œλ“€μž.

클린 μ½”λ“œ

이 책은 였브젝트 λ©˜ν†  μ§„μ˜μ΄ μƒκ°ν•˜λŠ” κΉ¨λ—ν•œ μ½”λ“œλ₯Ό μ„€λͺ…ν•œλ‹€. 이 책을 μ½λŠ”λ‹€κ³  λ›°μ–΄λ‚œ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ λœλ‹€λŠ” 보μž₯은 μ—†μœΌλ©°, λ›°μ–΄λ‚œ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μƒκ°ν•˜λŠ” 방식과 μ‚¬μš©ν•˜λŠ” 기술, 기ꡐ, 도ꡬλ₯Ό μ†Œκ°œν•˜κ³  κΆŒκ³ ν•œλ‹€.