Study/JavaScript(Clean code)

[JavaScript][clean-code] Early Return

갈푸라떼 2022. 5. 30. 02:39

* Early Return

- 말 그대로 일찍이 RETURN 하여 함수를 빠져나오는 것이다.

 

(참고) 너무 많은 Early return을 만드는것도 옳지는 않다.


* Early Return예시코드

* BAD CODE

function loginService(isLogin, user) {
  if (!isLogin) {
    if (checkToken()) {
      if (!user.nickname) {
        return registerUser(user);
      } else {
        refreshToken();

        return '로그인 성공';
      }
    } else {
      throw new Error('No Token');
    }
}
  • 로그인 여부 확인
  • 토큰 존재 확인
  • 기가입 유저 확인
    • 만약 가입 x : 가입시키기
    • 가입 o : 로그인 성공

- if문이 계속 이어져서 가독성이 적고 로직이 너무 의존적이여서 유지 보수도 힘들다.

* GOOD CODE

- Early Return을 이용해 로직을 분리하자

function loginService(isLogin, user) {
  // Early Return

  if (isLogin) {
    return
  }

  if (!checkToken()) {
    throw new Error('No Token');
  }

  if (!user.nickName) {
    return registerUser(user);
  }
  refreshToken();

  return '로그인 성공';
 
  // 함수를 이용해 한번 더 축약할 수 있다.
  // login();
}


function login() {
  refreshToken();
  return '로그인 성공';
}
  • 흐름이 명확해 진다.
  • 함수를 미리종료하여 사고하기 편하다
  • 로직은 변한것이 없다.

* Early Return예시코드(실생활에 빗대어 예시)

* BAD CODE

function 오늘하루(condition, weather, isJob) {
  if (condition === 'GOOD') {
    공부();
    게임();
    유튜브보기();

    if (weather === 'GOOD') {
      운동();
      빨래();
    }

    if (isJob === 'GOOD') {
      야간업무();
      조기취침();
    }
  }
}
  • 로직이 너무 하나의 조건에만 의존하고 있다.
  • 로직이 너무 하나의 조건에만 의존하는 경우 Early return으로 코드를 분리하면
    로직의 흐름이 더 간단하고 명시적으로 변할 수 있다.

* GOOD CODE

function 오늘하루(condition, weather, isJob) {
  if (condition !== 'GOOD') {
    return
  }

  공부();
  게임();
  유튜브보기();

  if (weather === 'GOOD') {
    운동();
    빨래();
  }

  if (isJob === 'GOOD') {
    야간업무();
    조기취침();
  }
}