[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.
