* 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') {
야간업무();
조기취침();
}
}
'Study > JavaScript(Clean code)' 카테고리의 다른 글
[JavaScript][clean-code] Default Case고려하기 (0) | 2022.05.30 |
---|---|
[JavaScript][clean-code] 부정 조건문 지양하기 (0) | 2022.05.30 |
[JavaScript][clean-code] else if & else피하기 (0) | 2022.05.29 |
[JavaScript][clean-code] 단축평가(short-circuit evaluation) (0) | 2022.05.29 |
[JavaScript][clean-code] Truthy & Falsy (0) | 2022.05.29 |