Post

[OOP] 객체지향 생활 체조 1. 한 메서드에 오직 한 단계의 들여쓰기(indent)만 한다

💡 한 메서드에 오직 한 단계의 들여쓰기(indent)만 한다

if 안에 또 if, 그리고 그 안에 for…
이런 식으로 중첩된 블록 구조가 많아지면
코드가 눈에 잘 안 들어오고, 유지보수가 어려워진다!

그래서 메서드 안에서 들여쓰기(tab) 는 한 단계까지만 허용하자는 원칙이다.


😵 예시: 좋지 않은 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public void ProcessUser(User user)
{
    if (user != null)
    {
        if (user.IsActive)
        {
            foreach (var order in user.Orders)
            {
                if (order.IsPaid)
                {
                    // 실제 처리 로직
                }
            }
        }
    }
}

👎 깊은 들여쓰기 때문에 어떤 로직인지 한눈에 안 들어옴


😎 개선된 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void ProcessUser(User user)
{
    if (user == null) return;
    if (!user.IsActive) return;

    ProcessPaidOrders(user.Orders);
}

private void ProcessPaidOrders(IEnumerable<Order> orders)
{
    foreach (var order in orders.Where(o => o.IsPaid))
    {
        // 실제 처리 로직
    }
}

✅ 불필요한 중첩을 줄이고
✅ 조건은 가드(early return) 방식으로 처리
✅ 책임은 메서드로 분리 → 한눈에 구조가 들어온다!


🔍 왜 중요할까?

  • 들여쓰기가 많아질수록 코드의 복잡도가 기하급수적으로 증가
  • 버그 발생 확률도 올라감
  • 메서드 분리가 잘 되어 있지 않다는 신호
  • TDD/리팩토링 하기 힘든 코드가 되기 쉬움

🧠 실전 팁

  • if 안에 또 if가 생기면 가드를 먼저 생각해보자
  • for 안에 if → 조건 필터링으로 대체
  • 들여쓰기가 2단 이상이면 메서드 추출을 고민해볼 시점

✨ 결론

“들여쓰기 1단계만 허용”은 단순한 스타일 규칙이 아니다.
→ 코드를 분리하고 책임을 명확히 나누라는 객체지향의 핵심 원칙이다!

This post is licensed under CC BY 4.0 by the author.

© Gubeommo. Some rights reserved.

Using the Chirpy theme for Jekyll.