if문이 중첩되지 않게 하려면 어떻게 해야 할까요
조회수 3920회
if문 안에 자꾸 if문이 생기는 경우에는 어떡하죠 보기 힘들어요 ㅜㅜ
psudo code)
bool conditionA = executeStepA(); //executeStepX는 그 전 스텝이 성공했을 때만 실행
if (conditionA){
bool conditionB = executeStepB();
if (conditionB){
bool conditionC = executeStepC();
if (conditionC){
...
}
}
}
executeThisFunctionInAnyCase(); //마지막에 무조건 실행되는 코드
제가 생각한 방법은 밑처럼 쓰는 건데 이러면 executeThisFunctionInAnyCase()
는 실행이 안돼서요.
어떻게 할 수 있을까요?
psudo code)
bool conditionA = executeStepA();
if (!conditionA) return;
bool conditionB = executeStepB();
if (!conditionB) return;
bool conditionC = executeStepC();
if (!conditionC) return;
1 답변
-
1. logic AND(&&)를 쓰는 방법
psudo code)
if (executeStepA() && executeStepB() && executeStepC()){ ... } executeThisFunctionInAnyCase();
(expression1 && expression2 && expression3 && ...)
은 왼쪽에서부터 오른쪽으로 차례로 체크되기 때문에expressionN
이false
일 경우 그 뒤로 평가되지 않고 if문을 빠져나옵니다 따라서 if문에서의 순서를 그대로 지킬 수 있습니다.2. 함수를 2개 쓰는 방법
질문자님의 코드를 최대한 활용해서 쓰면 다음과 같이 쓸 수 있습니다.
psudo code)
void foo() { bool conditionA = executeStepA(); if (!conditionA) return; bool conditionB = executeStepB(); if (!conditionB) return; bool conditionC = executeStepC(); if (!conditionC) return; } void bar() { foo(); executeThisFunctionInAnyCase(); }
댓글 입력