조건문만 보면 머리가 복잡해지는 이유
if-else가 끝도 없이 이어지는 코드, 한 번쯤은 다 겪어봤을 거예요. 어디가 어디랑 연결되는지 헷갈리고, 잠깐 한눈팔면 흐름을 놓치기 십상이죠.
저도 예전에 유지보수하다가 조건문에 갇힌 느낌을 받은 적이 있는데요, 이럴 때 한 번 정리해두면 진짜 나중에 얼마나 편한지 몰라요. 오늘은 그 방법, 같이 정리해볼게요.

1. 조건이 복잡하면 그냥 변수로 이름 붙여버리기!
- 복잡한 조건문은 변수로 이름을 붙여 간결하게 표현할 수 있다.
- 조건을 변수로 빼면 의미가 분명해져서 나중에 이해하기 쉽다.
- 조건이 너무 길어질 경우에는 함수로 분리하는 것도 좋은 방법이다.
if A and B and C and isDay:
ship_order()
else:
cancel_order()
그냥 보면 별 문제 없어 보여도, 나중에 다시 보면 “A가 뭐였지? B는?” 이런 생각이 꼬리에 꼬리를 물어요.
그래서 이렇게 바꾸면 훨씬 편해요:
order_is_ready = A and B and C and isDay
if order_is_ready:
ship_order()
else:
cancel_order()
읽자마자 무슨 조건인지 딱 감이 오죠? 실제 코드에선 A 이런 거 말고 has_items, user_verified, during_work_hours 같은 이름을 쓰면 더 좋고요.
게다가 조건이 진짜 길어진다면, 함수로 따로 빼는 것도 방법이에요. 나중에 테스트하기도 쉬워지고요.
2. 부정문보다는 긍정문이 뇌에 편하다니까요
- 긍정 조건이 부정 조건보다 이해하기 쉬워서 가독성이 좋다.
- 가능한 한 긍정 표현으로 작성하면 전체 흐름이 더 직관적이다.
- 실패 조건은 빠르게 처리해야 할 경우 예외적으로 부정문을 쓸 수도 있다.
if not is_valid:
return "Error"
보다
if is_invalid:
return "Error"
이게 더 바로 와닿지 않으세요?
물론 예외는 있어요. 빠르게 실패 처리하려면 부정 조건 먼저 쓰는 게 좋을 때도 있죠. 그래도 기본적으로는 긍정 조건이 훨씬 눈에 잘 들어옵니다.
코드도 결국 사람이 읽는 거니까요!

3. else-if 줄줄이? 그만 좀 쓰자...
솔직히 우리 다 이런 코드 짠 적 있죠:
if condition_a:
do_a()
elif condition_b:
do_b()
elif condition_c:
do_c()
else:
handle_default()
조건이 많아질수록 뭘 먼저 봐야 할지 감도 안 잡혀요.
이럴 땐 이렇게 바꾸면 깔끔합니다:
if condition_a:
do_a()
return
if condition_b:
do_b()
return
if condition_c:
do_c()
return
handle_default()
각 조건 처리하고 바로 return 하면 끝! 중간에 else 끼워넣을 필요도 없고, 흐름이 훨씬 평탄해져요. 실수 줄이기도 좋아요.

4. 실패할 조건은 먼저 확인하고 바로 탈출하자!
- 실패 조건은 가장 먼저 확인해서 빠르게 함수에서 벗어나는 것이 좋다.
- 이렇게 하면 중첩을 줄이고 코드 흐름이 간단해진다.
- 디버깅과 유지보수도 훨씬 수월해진다.
if user.is_authenticated:
if user.is_admin:
handle_admin()
elif user.is_moderator:
handle_moderator()
else:
handle_user()
else:
deny_access()
근데 이러면 코드가 계속 안으로 말려 들어가요. 그래서 이렇게 바꿨어요:
if not user.is_authenticated:
deny_access()
return
if user.is_admin:
handle_admin()
return
if user.is_moderator:
handle_moderator()
return
handle_user()
실패 조건은 위에서 처리하고 바로 return! 그러면 나머지 코드가 훨씬 읽기 편해져요. 개인적으로, 이거 적용하고 나서 디버깅 시간이 확 줄었어요.
조건문을 평탄하게 만들면 숨통이 트인다
- 여러 가지 팁을 종합하면 조건문 구조가 매우 깔끔해진다.
- 납작한 구조 덕분에 누구나 이해하기 쉬운 코드가 된다.
- 복잡한 로직도 읽기 편하고 관리가 쉬워진다.
if not user.is_authenticated:
deny_access()
return
if user.is_admin:
handle_admin()
return
if user.is_moderator:
handle_moderator()
return
handle_user()
정말 딱 떨어지고, 누구한테 보여줘도 “오 이거 보기 편하네”라는 말이 나옵니다. 초보든 숙련자든, 이렇게 정리된 코드 보면 기분 좋아져요.
Conclusion: 조건문 하나 바꾸는 것만으로도 기적이 일어난다
혹시 예전 프로젝트 떠오르시나요? 중첩된 조건문에 갇혀서 고생한 기억... 그거 오늘 배운 걸로 충분히 개선할 수 있어요:
- 복잡한 조건은 변수로 따로 빼기
- 긍정 표현으로 바꿔서 읽기 좋게 만들기
- else-if는 줄이고, return으로 납작하게 정리하기
- 실패 조건은 먼저 체크하고 빠르게 종료하기
이런 작은 습관들이 모여서, 코드가 진짜 깔끔해지고 팀워크도 좋아집니다.
처음엔 어색할 수 있어요. 하지만 한두 번 적용해보면, 이제는 안 쓰면 이상한 느낌이 들걸요?
'SW > Coding' 카테고리의 다른 글
| 함수 설계 잘하는 법: 초보 개발자를 위한 실전 팁과 사례 (0) | 2025.06.27 |
|---|---|
| while문 vs for문 언제 쓰는 게 좋을까? 초보자도 쉽게 이해하는 반복문 가이드 (0) | 2025.06.26 |
| 변수 이름 잘 짓는 법, 나중에 후회 안 하려면 꼭 알아야 할 팁 (0) | 2025.06.24 |
| 코드 읽는 사람이 행복해지는 변수 이름 짓는 법 (0) | 2025.06.06 |
| 주석 잘 다는 법: 초보 개발자를 위한 실전 코드 주석 가이드 (0) | 2025.06.05 |