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

조회수 3899회

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 답변

  • 좋아요

    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();
    }
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)