제어 흐름

다중 루프 탈출은 가능하면 구조적인 대안으로 표현한다

`goto END_ALL_LOOPS`는 세 겹 루프를 즉시 빠져나갈 수 있지만, 흐름을 추적하기 어렵게 만듭니다. 같은 조건 `(1,1,1)`을 플래그 변수나 함수 `return`으로 바꾸면 탈출 의도가 코드 구조 안에 남습니다.

1

goto 레이블

if (i == 1 && j == 1 && k == 1) goto END_ALL_LOOPS;

즉시 모든 루프를 벗어납니다. 레거시 코드 이해에는 필요하지만, 새 코드에서는 점프 대상과 상태 변화를 함께 추적해야 합니다.

권장도 낮음
2

플래그 변수

found = true; if (found) break;

`found`가 바깥 루프까지 탈출 신호를 전달합니다. 코드가 조금 길어져도 각 루프의 종료 조건이 눈에 보입니다.

구조적 대안
3

함수 분리와 return

void findAndExit() { if (조건) return; }

탐색 자체를 함수로 분리하면 조건 만족 순간 함수 전체를 종료할 수 있습니다. 모듈화와 테스트 관점에서도 가장 깔끔합니다.

우선 검토

비교 기준

흐름 추적 레이블 점프보다 `found`나 `return`이 읽는 순서와 실행 순서를 가깝게 유지합니다.
상태 안전 스코프와 자원 정리 지점이 명확할수록 자원 누수와 객체 수명 주기 실수를 줄일 수 있습니다.
코드 의도 “탐색 성공 시 종료”라면 함수 이름과 `return`이 의도를 가장 직접적으로 설명합니다.