if문이 중첩되지 않게 하려면 어떻게 해야 할까요


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;
  • 2016년 01월 07일에 작성됨

조회수 332


1 답변


좋아요
0
싫어요
채택취소하기

1. logic AND(&&)를 쓰는 방법

psudo code)

if (executeStepA() && executeStepB() && executeStepC()){
    ...
}
executeThisFunctionInAnyCase();

(expression1 && expression2 && expression3 && ...) 은 왼쪽에서부터 오른쪽으로 차례로 체크되기 때문에 expressionNfalse일 경우 그 뒤로 평가되지 않고 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();
}
  • 2016년 01월 07일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close