if문 중첩 없애기(feat. 제로초)

MinJae·2021년 8월 11일
0

제로초님의 ES6 강좌를 듣던 중
if문 중첩 제거 방법이 유용하여 velog에 기록해봅니다!

[if문 중첩을 없애는 순서]

  1. 공통된 절차를 각 분기점 내부에 넣는다.
  2. 분기점에서 짧은 절차부터 if문을 작성한다.
  3. 짧은 절차가 끝나면 return이나 break로 중단한다.
  4. else를 제거한다

[실습]
아래의 코드로 중첩을 제거해 보겠습니다!


//샘플 코드
function test(){
  let result ='';
  if(a){
    if(!b){
  	  result = 'c';
    }
  } else {
  	result = 'a';
  }
  result +='b';
  return result;
}

1. 공통된 절차를 각 분기점 내부에 넣는다.

function test(){
  let result ='';
  if(a){
    if(!b){
  	  result = 'c';
    }
    result +='b'; //추가
    return result;//추가
  } else {
  	result = 'a';
    result +='b';//추가
    return result;//추가
  }
  //result +='b';
  //return result;
}

2. 분기점에서 짧은 절차부터 if문을 작성한다.

원래 else문에 있던 코드가 짧으니
처음 나오는 if문 내부로 옮겨 줍시다.
이때 첫 if문의 조건문에 !를 붙여주어야 합니다.

왜냐하면 옮기는 코드가 else문에 있던 코드였죠?
그렇기 때문에 !a를 해줘야 원래 로직에 맞기 때문입니다.

function test(){
  let result ='';
  if(!a){
    result = 'a';
    result +='b';//추가
    return result;//추가
  } else {
    if(!b){
  	  result = 'c';
    }
    result +='b'; //추가
    return result;//추가
  }
  //result +='b';
  //return result;
}

3. 짧은 절차가 끝나면 return이나 break로 중단한다.

이미 return이 존재하기 때문에 따로 처리할 사항은 없네요.

function test(){
  let result ='';
  if(!a){
    result = 'a';
    result +='b';//추가
    return result;//추가
  } else {
    if(!b){
  	  result = 'c';
    }
    result +='b'; //추가
    return result;//추가
  }
}

4. else를 제거한다

function test(){
  let result ='';
  if(!a){
    result = 'a';
    result +='b';//추가
    return result;//추가
  }
    if(!b){
  	  result = 'c';
    }
    result +='b'; //추가
    return result;//추가
}
profile
나 개발 좋아하네?

0개의 댓글