λ„μ„œ

[λ„μ„œ] Clean Code, by Robert C. Martin (Uncle Bob)

ioh'sDeveloper 2025. 1. 7. 21:24

 

πŸ“š Clean Code κ°œμš”

Robert C. Martin(일λͺ… Uncle Bob)의 **"Clean Code: A Handbook of Agile Software Craftsmanship"**λŠ” μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμžλ“€μ—κ²Œ κΉ¨λ—ν•˜κ³  μœ μ§€λ³΄μˆ˜ κ°€λŠ₯ν•œ μ½”λ“œ μž‘μ„± 방법을 μ œμ‹œν•˜λŠ” ν•„λ…μ„œμž…λ‹ˆλ‹€. 이 책은 μ½”λ“œμ˜ 가독성과 μœ μ§€λ³΄μˆ˜μ„±μ„ 높이기 μœ„ν•΄ λ‹€μ–‘ν•œ 원칙, 사둀, 그리고 μ‹€μ „ μ½”λ“œλ₯Ό 톡해 κ°œλ°œμžλ“€μ΄ μ‹€μ²œν•  수 μžˆλŠ” 지침을 μ œκ³΅ν•©λ‹ˆλ‹€.


πŸ“š "Clean Code" by Robert C. Martin (Uncle Bob)

**"Clean Code: A Handbook of Agile Software Craftsmanship"**은 μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμ—μ„œ **κΉ¨λ—ν•˜κ³  μœ μ§€λ³΄μˆ˜ κ°€λŠ₯ν•œ μ½”λ“œ(Clean Code)**λ₯Ό μž‘μ„±ν•˜λŠ” 방법과 원칙을 닀룬 μ†Œν”„νŠΈμ›¨μ–΄ μ—”μ§€λ‹ˆμ–΄λ§μ˜ ν•„λ…μ„œμž…λ‹ˆλ‹€. 이 책은 κ°œλ°œμžλ“€μ΄ 효율적이고 읽기 μ‰¬μš΄ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ„λ‘ 돕기 μœ„ν•΄ λ‹€μ–‘ν•œ 원칙과 μ‹€μ „ 사둀λ₯Ό μ†Œκ°œν•©λ‹ˆλ‹€.


🎯 핡심 μ£Όμ œμ™€ λ‚΄μš©

1️⃣ κΉ¨λ—ν•œ μ½”λ“œμ˜ μ •μ˜

  • κΉ¨λ—ν•œ μ½”λ“œλŠ” 읽기 쉽고 μ΄ν•΄ν•˜κΈ° 쉽고 λ³€κ²½ν•˜κΈ° μ‰¬μš΄ μ½”λ“œμž…λ‹ˆλ‹€.
  • "λ‚˜μœ μ½”λ“œ"λŠ” μ‹œκ°„μ΄ μ§€λ‚ μˆ˜λ‘ μœ μ§€λ³΄μˆ˜κ°€ μ–΄λ €μ›Œμ§€κ³ , **기술 뢀채(Technical Debt)**λ₯Ό μ¦κ°€μ‹œν‚΅λ‹ˆλ‹€.

2️⃣ μ½”λ“œ κ°œμ„ μ˜ 원칙과 방법

  • λ³€μˆ˜, ν•¨μˆ˜, 클래슀, 객체 μ§€ν–₯ 섀계 등을 닀루며, 각 μš”μ†Œλ₯Ό μ–΄λ–»κ²Œ 더 κΉ”λ”ν•˜κ²Œ λ¦¬νŒ©ν† λ§ν•  수 μžˆλŠ”μ§€ μ„€λͺ…ν•©λ‹ˆλ‹€.

3️⃣ ν•¨μˆ˜ μž‘μ„±μ˜ 원칙

  • ν•¨μˆ˜λŠ” μ§§κ³ , ν•˜λ‚˜μ˜ 일을 ν•΄μ•Ό ν•˜λ©°, μ˜λ„λ₯Ό λͺ…ν™•νžˆ λ“œλŸ¬λ‚΄μ•Ό ν•©λ‹ˆλ‹€.
  • "ν•˜λ‚˜μ˜ ν•¨μˆ˜λŠ” ν•˜λ‚˜μ˜ λͺ©μ λ§Œ κ°€μ Έμ•Ό ν•œλ‹€."

4️⃣ μ½”λ“œ 슀멜(Code Smell)κ³Ό λ¦¬νŒ©ν† λ§

  • μ½”λ“œ 슀멜: μ½”λ“œκ°€ λ³΅μž‘ν•˜κ±°λ‚˜ λΆˆν•„μš”ν•˜κ²Œ μ–΄λ €μ›Œ λ³΄μ΄λŠ” 문제점.
  • μ΄λŸ¬ν•œ 문제λ₯Ό λ°œκ²¬ν•˜κ³  λ¦¬νŒ©ν† λ§μ„ 톡해 κ°œμ„ ν•˜λŠ” 방법을 μ„€λͺ…ν•©λ‹ˆλ‹€.

5️⃣ SOLID 원칙

  • 객체 μ§€ν–₯ μ„€κ³„μ˜ 핡심 원칙인 SOLID 원칙을 μžμ„Ένžˆ μ„€λͺ…ν•©λ‹ˆλ‹€.
    • S: Single Responsibility Principle (단일 μ±…μž„ 원칙)
    • O: Open/Closed Principle (개방/폐쇄 원칙)
    • L: Liskov Substitution Principle (λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜ 원칙)
    • I: Interface Segregation Principle (μΈν„°νŽ˜μ΄μŠ€ 뢄리 원칙)
    • D: Dependency Inversion Principle (μ˜μ‘΄μ„± μ—­μ „ 원칙)

6️⃣ ν…ŒμŠ€νŠΈ 주도 개발(TDD)κ³Ό λ¦¬νŒ©ν† λ§

  • ν…ŒμŠ€νŠΈ μ½”λ“œλ₯Ό λ¨Όμ € μž‘μ„±ν•˜κ³  이λ₯Ό 기반으둜 μ½”λ“œλ₯Ό κ°œμ„ ν•˜λŠ” TDD 기법을 ꢌμž₯ν•©λ‹ˆλ‹€.

🎯 μ£Όμš” κ΅ν›ˆ 및 μ² ν•™

πŸ”‘ 1. "λ‚˜μœ μ½”λ“œ"λ₯Ό λ‘λ €μ›Œν•˜λΌ

  • λ‚˜μœ μ½”λ“œλŠ” ν”„λ‘œμ νŠΈμ˜ μ‹€νŒ¨λ₯Ό μ΄ˆλž˜ν•©λ‹ˆλ‹€.
  • μ²˜μŒλΆ€ν„° κΉ¨λ—ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜κ³ , μ½”λ“œλ₯Ό μ§€μ†μ μœΌλ‘œ λ¦¬νŒ©ν† λ§ν•΄μ•Ό ν•©λ‹ˆλ‹€.

πŸ”‘ 2. "μ½”λ“œμ˜ 가독성"이 μ€‘μš”ν•˜λ‹€

  • μ½”λ“œλŠ” 컴퓨터가 μ•„λ‹ˆλΌ μ‚¬λžŒμ΄ μ½λŠ” 것을 염두에 두고 μž‘μ„±ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  • 가독성이 높은 μ½”λ“œκ°€ μœ μ§€λ³΄μˆ˜μ™€ ν™•μž₯에 μœ λ¦¬ν•©λ‹ˆλ‹€.

πŸ”‘ 3. "μž‘μ€ ν•¨μˆ˜, 의미 μžˆλŠ” 이름"

  • ν•¨μˆ˜λŠ” μž‘μ„μˆ˜λ‘ μ’‹μœΌλ©°, 이름은 μ˜λ„λ₯Ό λͺ…ν™•ν•˜κ²Œ λ“œλŸ¬λ‚΄λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.
  • 예: getUserData() λŒ€μ‹  fetchUserDataFromDatabase() 같은 ꡬ체적인 이름을 μ‚¬μš©ν•˜λΌ.

πŸ›  μ‹€μ „ μ½”λ“œ 예제

  • Before:
  • public int calculate(int a, int b, int c) { return a + b * c; }
  • After:
  • public int calculateTotalPrice(int unitPrice, int quantity, int discount) { return unitPrice * quantity - discount; }

➑️ λ³€μˆ˜μ™€ ν•¨μˆ˜ 이름을 λͺ…ν™•νžˆ ν•˜λ©΄ μ½”λ“œ 가독성이 ν–₯μƒλ©λ‹ˆλ‹€.


πŸŽ“ μ±… μΆ”μ²œν•˜λŠ” 이유

  • μ½”λ“œ 가독성, μœ μ§€λ³΄μˆ˜μ„±, λ¦¬νŒ©ν† λ§ 방법을 배울 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 특히 SOLID 원칙은 μž„λ‚˜ν˜„μ΄ 개발 쀑인 Java 기반 λ°±μ—”λ“œμ—μ„œ 객체 μ§€ν–₯ 섀계 μ‹œ 맀우 μœ μš©ν•©λ‹ˆλ‹€.
  • λ³΅μž‘ν•œ μ½”λ“œμ—μ„œ μ˜λ„λ₯Ό λ“œλŸ¬λ‚΄λŠ” λ³€μˆ˜/ν•¨μˆ˜λͺ…을 μ‚¬μš©ν•˜κ³ , μ½”λ“œ μŠ€λ©œμ„ μ œκ±°ν•˜λŠ” 데 큰 도움이 λ©λ‹ˆλ‹€.

πŸ“– μ±…μ˜ ꡬ성

Chapter No. Title Key Concept

1 Clean Code κΉ¨λ—ν•œ μ½”λ“œλž€ 무엇인가
2 Meaningful Names 의미 μžˆλŠ” 이름 μ‚¬μš©ν•˜κΈ°
3 Functions ν•¨μˆ˜ μž‘μ„± 원칙
4 Comments 주석을 쀄이고 μ½”λ“œ 자체둜 μ„€λͺ…ν•˜κΈ°
5 Formatting μ½”λ“œ ν¬λ§·νŒ…κ³Ό 일관성
6 Objects and Data Structures 객체와 데이터 ꡬ쑰
7 Error Handling 였λ₯˜ 처리 원칙
8 Boundaries μ‹œμŠ€ν…œ 경계λ₯Ό κ΄€λ¦¬ν•˜κΈ°
9 Unit Tests λ‹¨μœ„ ν…ŒμŠ€νŠΈ μž‘μ„± 방법
10 Classes 클래슀 섀계 원칙
11 Systems μ‹œμŠ€ν…œ λ””μžμΈ

🎯 μ‹€μ œλ‘œ 이 책을 읽으면 μ–΄λ–»κ²Œ λ³€ν• κΉŒ?

  • βœ… 더 μ§§κ³  읽기 μ‰¬μš΄ ν•¨μˆ˜λ₯Ό μž‘μ„±ν•˜κ²Œ 됨
  • βœ… μ½”λ“œμ˜ μ˜λ„λ₯Ό 잘 λ“œλŸ¬λ‚΄λŠ” λ³€μˆ˜μ™€ ν•¨μˆ˜ 이름을 μ‚¬μš©ν•˜κ²Œ 됨
  • βœ… λΆˆν•„μš”ν•œ 주석을 쀄이고 μ½”λ“œ 자체둜 μ„€λͺ…ν•  수 있음
  • βœ… μœ μ§€λ³΄μˆ˜μ™€ ν™•μž₯성이 높은 μ½”λ“œ μž‘μ„± μŠ΅κ΄€μ„ κ°€μ§€κ²Œ 됨

"μ½”λ“œκ°€ 읽기 μ’‹μœΌλ©΄ μœ μ§€λ³΄μˆ˜λ„ 쉽닀"λŠ” 철학을 λ°”νƒ•μœΌλ‘œ ν”„λ‘œμ νŠΈμ˜ 생산성과 μ½”λ“œ ν’ˆμ§ˆμ„ ν–₯μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.
읽기 쉽고 μ΄ν•΄ν•˜κΈ° μ‰¬μš΄ μ½”λ“œλ₯Ό λ§Œλ“€κ³  μ‹Άλ‹€λ©΄ **"Clean Code"**λŠ” ν•„μˆ˜μž…λ‹ˆλ‹€! 😊


βœ… Clean Code μ‹€μ²œ κ°€μ΄λ“œ

  1. μ§§κ³  λͺ…ν™•ν•œ ν•¨μˆ˜ μž‘μ„±
  2. 의미 μžˆλŠ” λ³€μˆ˜μ™€ ν•¨μˆ˜ 이름 μ‚¬μš©
  3. 주석을 μ΅œμ†Œν™”ν•˜κ³  μ½”λ“œλ‘œ μ„€λͺ…ν•˜λΌ
  4. μ½”λ“œ μŠ€λ©œμ„ κ°μ§€ν•˜κ³  λ¦¬νŒ©ν† λ§ν•˜λΌ
  5. SOLID 원칙을 μ€€μˆ˜ν•˜λΌ
  6. ν…ŒμŠ€νŠΈ 주도 개발(TDD)을 μ‹€μ²œν•˜λΌ

πŸ”§ λ¦¬νŒ©ν† λ§κ³Ό μ½”λ“œ κ°œμ„  μ‹€μ „ 예제

Before Refactoring:

public int calculate(int a, int b, int c) {
    return a + b * c;
}

After Refactoring:

public int calculateTotalPrice(int unitPrice, int quantity, int discount) {
    return unitPrice * quantity - discount;
}

λ¦¬νŒ©ν† λ§ Tips:

  1. ν•¨μˆ˜ 이름을 λͺ…ν™•ν•˜κ²Œ λ°”κΎΌλ‹€.
  2. λ§€κ°œλ³€μˆ˜ 이름을 의미 있게 μˆ˜μ •ν•œλ‹€.

Clean Code: 핡심 μš”μ•½κ³Ό 개발자λ₯Ό μœ„ν•œ μ‹€μ²œ κ°€μ΄λ“œ

πŸ“š Clean Code κ°œμš”

Robert C. Martin(일λͺ… Uncle Bob)의 **"Clean Code: A Handbook of Agile Software Craftsmanship"**λŠ” μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμžλ“€μ—κ²Œ κΉ¨λ—ν•˜κ³  μœ μ§€λ³΄μˆ˜ κ°€λŠ₯ν•œ μ½”λ“œ μž‘μ„± 방법을 μ œμ‹œν•˜λŠ” ν•„λ…μ„œμž…λ‹ˆλ‹€. 이 책은 μ½”λ“œμ˜ 가독성과 μœ μ§€λ³΄μˆ˜μ„±μ„ 높이기 μœ„ν•΄ λ‹€μ–‘ν•œ 원칙, 사둀, 그리고 μ‹€μ „ μ½”λ“œλ₯Ό 톡해 κ°œλ°œμžλ“€μ΄ μ‹€μ²œν•  수 μžˆλŠ” 지침을 μ œκ³΅ν•©λ‹ˆλ‹€.


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

Uncle Bob은 κΉ¨λ—ν•œ μ½”λ“œ(Clean Code)λ₯Ό λ‹€μŒκ³Ό 같이 μ •μ˜ν•©λ‹ˆλ‹€:

"κΉ¨λ—ν•œ μ½”λ“œλŠ” μ‚¬λžŒλ“€μ—κ²Œ 기쁨을 μ£ΌλŠ” μ½”λ“œλ‹€."

✨ κΉ¨λ—ν•œ μ½”λ“œμ˜ νŠΉμ§•

  • 가독성(Readability): μ½”λ“œλ₯Ό μ½λŠ” μ‚¬λžŒμ΄ μ‰½κ²Œ 이해할 수 μžˆμ–΄μ•Ό 함.
  • λ‹¨μˆœμ„±(Simplicity): λΆˆν•„μš”ν•œ λ³΅μž‘ν•¨μ„ μ œκ±°ν•˜κ³ , μ½”λ“œλŠ” κ°„κ²°ν•˜κ³  직관적이어야 함.
  • μœ μ§€λ³΄μˆ˜μ„±(Maintainability): μ‹œκ°„μ΄ μ§€λ‚˜λ„ μ‰½κ²Œ μˆ˜μ •ν•˜κ³  ν™•μž₯ν•  수 μžˆμ–΄μ•Ό 함.
  • ν™•μž₯μ„±(Extensibility): λ³€κ²½ μš”κ΅¬ 사항에 μ‰½κ²Œ λŒ€μ‘ν•  수 μžˆμ–΄μ•Ό 함.

🎯 κΉ¨λ—ν•œ μ½”λ“œλ₯Ό μœ„ν•œ 핡심 원칙

μ±…μ—μ„œ μ œμ‹œν•˜λŠ” 핡심 원칙듀을 μ •λ¦¬ν•˜λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

1️⃣ 의미 μžˆλŠ” 이름 μ‚¬μš©ν•˜κΈ°

  • λ³€μˆ˜, ν•¨μˆ˜, 클래슀 이름은 μ˜λ„λ₯Ό λͺ…ν™•ν•˜κ²Œ λ“œλŸ¬λ‚΄μ•Ό ν•©λ‹ˆλ‹€.
  • μ΄λ¦„λ§Œ 봐도 μ½”λ“œμ˜ 역할을 이해할 수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

❌ Bad Example:

int d; // κ²½κ³Ό μ‹œκ°„ (days)

βœ… Good Example:

int elapsedTimeInDays;

Tips:

  • μΆ•μ•½μ–΄λ₯Ό ν”Όν•˜κ³ , ꡬ체적인 단어λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
  • ν•¨μˆ˜ 이름은 동사 ν˜•νƒœλ‘œ μž‘μ„±ν•©λ‹ˆλ‹€.

2️⃣ ν•¨μˆ˜λŠ” μ§§κ³  ν•˜λ‚˜μ˜ 일을 ν•΄μ•Ό ν•œλ‹€

  • ν•¨μˆ˜λŠ” μ§§μ„μˆ˜λ‘ μ’‹μŠ΅λ‹ˆλ‹€.
  • ν•¨μˆ˜λŠ” **ν•˜λ‚˜μ˜ μ±…μž„(One Responsibility)**만 κ°€μ Έμ•Ό ν•©λ‹ˆλ‹€.

❌ Bad Example:

public void processOrder(Order order) {
    validateOrder(order);
    calculateDiscount(order);
    saveOrder(order);
}

βœ… Good Example:

public void validateOrder(Order order) { ... }
public void calculateDiscount(Order order) { ... }
public void saveOrder(Order order) { ... }

3️⃣ 주석을 쀄이고 μ½”λ“œ 자체둜 μ„€λͺ…ν•˜λΌ

  • 주석은 μ½”λ“œμ˜ 행동을 μ„€λͺ…ν•˜λŠ” 것이 μ•„λ‹ˆλΌ, μ½”λ“œμ˜ μ˜λ„λ₯Ό λ“œλŸ¬λ‚΄μ•Ό ν•©λ‹ˆλ‹€.
  • λΆˆν•„μš”ν•œ 주석을 λ‚¨λ°œν•˜μ§€ 말고, μ½”λ“œ μžμ²΄κ°€ μ„€λͺ…이 λ˜λ„λ‘ μž‘μ„±ν•©λ‹ˆλ‹€.

❌ Bad Example:

// μ‚¬μš©μž 데이터λ₯Ό λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯ν•©λ‹ˆλ‹€
saveUserToDatabase(user);

βœ… Good Example:

public void saveUserToDatabase(User user) { ... }

4️⃣ μ½”λ“œ 슀멜(Code Smell) 제거

  • μ½”λ“œ μŠ€λ©œμ΄λž€ μ½”λ“œκ°€ λ³΅μž‘ν•˜κ±°λ‚˜ λΉ„νš¨μœ¨μ μœΌλ‘œ λ³΄μ΄λŠ” 문제λ₯Ό λ§ν•©λ‹ˆλ‹€.
  • λ‹€μŒκ³Ό 같은 μ½”λ“œ μŠ€λ©œμ„ λ°œκ²¬ν•˜λ©΄ μ¦‰μ‹œ λ¦¬νŒ©ν† λ§ν•΄μ•Ό ν•©λ‹ˆλ‹€.

μ½”λ“œ 슀멜 사둀:

  • 쀑볡 μ½”λ“œ (Duplicate Code)
  • μ§€λ‚˜μΉ˜κ²Œ 큰 ν•¨μˆ˜ (Large Function)
  • λΆˆν•„μš”ν•œ 주석 (Unnecessary Comments)
  • κ³Όλ„ν•œ 쑰건문 (Excessive If-Else Statements)

5️⃣ SOLID 원칙 μ μš©ν•˜κΈ°

객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μ€‘μš”ν•œ SOLID 원칙을 μ€€μˆ˜ν•˜λ©΄, μ½”λ“œμ˜ μœ μ§€λ³΄μˆ˜μ„±κ³Ό ν™•μž₯성을 크게 ν–₯μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

원칙 μ„€λͺ…

S: 단일 μ±…μž„ 원칙 ν΄λž˜μŠ€λŠ” ν•˜λ‚˜μ˜ μ±…μž„λ§Œ κ°€μ Έμ•Ό 함
O: 개방/폐쇄 원칙 κΈ°μ‘΄ μ½”λ“œλ₯Ό μˆ˜μ •ν•˜μ§€ μ•Šκ³  ν™•μž₯ κ°€λŠ₯ν•΄μ•Ό 함
L: λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜ 원칙 μ„œλΈŒνƒ€μž…μ€ μ–Έμ œλ‚˜ 기반 νƒ€μž…μœΌλ‘œ λŒ€μ²΄ κ°€λŠ₯ν•΄μ•Ό 함
I: μΈν„°νŽ˜μ΄μŠ€ 뢄리 원칙 νŠΉμ • ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μœ„ν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•΄μ•Ό 함
D: μ˜μ‘΄μ„± μ—­μ „ 원칙 κ³ μˆ˜μ€€ λͺ¨λ“ˆμ€ μ €μˆ˜μ€€ λͺ¨λ“ˆμ— μ˜μ‘΄ν•΄μ„œλŠ” μ•ˆ 됨

πŸ”§ λ¦¬νŒ©ν† λ§κ³Ό μ½”λ“œ κ°œμ„  μ‹€μ „ 예제

Before Refactoring:

public int calculate(int a, int b, int c) {
    return a + b * c;
}

After Refactoring:

public int calculateTotalPrice(int unitPrice, int quantity, int discount) {
    return unitPrice * quantity - discount;
}

λ¦¬νŒ©ν† λ§ Tips:

  1. ν•¨μˆ˜ 이름을 λͺ…ν™•ν•˜κ²Œ λ°”κΎΌλ‹€.
  2. λ§€κ°œλ³€μˆ˜ 이름을 의미 있게 μˆ˜μ •ν•œλ‹€.

βœ… Clean Code μ‹€μ²œ κ°€μ΄λ“œ

  1. μ§§κ³  λͺ…ν™•ν•œ ν•¨μˆ˜ μž‘μ„±
  2. 의미 μžˆλŠ” λ³€μˆ˜μ™€ ν•¨μˆ˜ 이름 μ‚¬μš©
  3. 주석을 μ΅œμ†Œν™”ν•˜κ³  μ½”λ“œλ‘œ μ„€λͺ…ν•˜λΌ
  4. μ½”λ“œ μŠ€λ©œμ„ κ°μ§€ν•˜κ³  λ¦¬νŒ©ν† λ§ν•˜λΌ
  5. SOLID 원칙을 μ€€μˆ˜ν•˜λΌ
  6. ν…ŒμŠ€νŠΈ 주도 개발(TDD)을 μ‹€μ²œν•˜λΌ

πŸŽ“ 마무리

Robert C. Martin의 Clean CodeλŠ” λͺ¨λ“  κ°œλ°œμžλ“€μ΄ λ°˜λ“œμ‹œ 읽어야 ν•  μ±…μž…λ‹ˆλ‹€. μ½”λ“œλ₯Ό κΉ¨λ—ν•˜κ²Œ μž‘μ„±ν•˜λ©΄ μœ μ§€λ³΄μˆ˜ λΉ„μš©μ΄ 쀄어듀고, νŒ€ μ „μ²΄μ˜ 생산성이 ν–₯μƒλ©λ‹ˆλ‹€.

**"μ½”λ“œλŠ” 컴퓨터가 μ•„λ‹ˆλΌ μ‚¬λžŒμ„ μœ„ν•΄ μž‘μ„±ν•΄μ•Ό ν•œλ‹€"**λŠ” 철학을 항상 κΈ°μ–΅ν•˜λ©°, 더 λ‚˜μ€ μ½”λ“œλ₯Ό μž‘μ„±ν•΄ λ΄…μ‹œλ‹€!


πŸ’‘ μΆ”μ²œ λŒ€μƒ:

  • μ½”λ“œ ν’ˆμ§ˆμ„ ν–₯μƒμ‹œν‚€κ³  싢은 개발자
  • λ¦¬νŒ©ν† λ§μ„ μ‹€μ²œν•˜κ³  싢은 개발자
  • νŒ€ ν˜‘μ—…μ—μ„œ μ½”λ“œ 리뷰λ₯Ό κ°•ν™”ν•˜κ³  싢은 개발자