클린코드 자바스크립트 4-3 분기 다루기(else if & else 피하기, Early Return)
Clean Code JS 강좌는 여러 절로 구성되어 있습니다.
- 클린코드 자바스크립트 1-1 변수 다루기(let & const 사용, function scope & block scope)
- 클린코드 자바스크립트 1-2 변수 다루기(전역 공간 사용 최소화,임시 변수 제거하기)
- 클린코드 자바스크립트 1-3 변수 다루기(호이스팅)
- 클린코드 자바스크립트 2-1 타입 다루기(타입 검사)
- 클린코드 자바스크립트 2-2 타입 다루기(undefined & null, eqeq 줄이기)
- 클린코드 자바스크립트 2-3 타입 다루기(형변환 주의하기, isNaN)
- 클린코드 자바스크립트 3-1 경계 다루기(min-max,begin-end,first-last,접두사와 접미사, 매개변수 순서가 경계)
- 클린코드 자바스크립트 4-1 분기 다루기(값식문, 삼항 연산자)
- 클린코드 자바스크립트 4-2 분기 다루기(truthy & falsy, 단락 회로 평가)
- 클린코드 자바스크립트 4-3 분기 다루기(else if & else 피하기, Early Return, Default case 고려하기)
- 클린코드 자바스크립트 4-4 분기 다루기(Default case 고려하기, Nullish coalescing operator, 드모르간 법칙)
- 클린코드 자바스크립트 5-1 배열 다루기(JS의 배열은 객체다, Array.length, 배열 요소에 접근하기)
- 클린코드 자바스크립트 5-2 배열 다루기(유사 배열 객체, 불변성, for문 배열 고차 함수로 리팩토링)
- 클린코드 자바스크립트 5-3 배열 다루기(배열 메소드 체이닝 활용, map vs forEach, continue&break)
- 클린코드 자바스크립트 6-1 객체 다루기(Object Destructuring, Object.freeze)
- 클린코드 자바스크립트 6-2 객체 다루기(Prototype 조작 지양하기, hasOwnProperty, 직접 접근 지양하기)
- 클린코드 자바스크립트 7-1 함수 다루기([함수,메서드,생성자], argument & parameter,복잡한 인자 관리하기)
- 클린코드 자바스크립트 7-2 함수 다루기(default value, Rest Parameters, void & return, 화살표 함수)
- 클린코드 자바스크립트 7-3 함수 다루기(Callback Function, 순수 함수, Closure)
분기 다루기 😎
else if & else 피하기👍
- Promise then chaining 과 같은 오해
- 많이 늘어질 경우에는 switch 문을 사용하는 것이 좋다.
const x = 1;
if (x >= 0) {
console.log("x는 0과 같거나 크다");
} else if (x > 0) {
console.log("x는 0보다 크다");
}
// 위와 똑같은 예
if (x >= 0) {
console.log("x는 0과 같거나 크다");
} else {
if (x > 0) {
console.log("x는 0보다 크다");
}
}
const getActiveUserName = (user) {
if(user.name) {
return user.name;
}
}
// 함수가 2가지 역할을 할 때 에러가 난다.
// => 참,거짓으로 반대되는 결과를 가져오는 else
function getHelloCustomer(user) {
if(user.age < 20) {
report(user);
}
// else { => else 사용시 return '인냥하세요' 실행이 되지 않는다.
return '안녕하세요';
// }
}
Early Return👍
// 읽기 어려움
function loginService(isLogin, user) {
if (!isLogin) {
if (checkToken()) {
if (!user.nickName) {
return registerUser(user);
} else {
refreshToken();
return "로그인 성공";
}
} else {
throw new Error("No Token");
}
}
}
function loginService2(isLogin, user) {
// Early Return
/**
* 함수를 미리 종료
* 사고하기 편하다.
*/
if (isLogin) {
return;
}
if (!checkToken) {
throw new Error("No Token");
}
if (!user.nickName) {
return registerUser(user);
}
refreshToken();
return "로그인 성공";
}
function 오늘하루(condition, weather, isJob) {
if (condition === "GOOD") {
공부();
게임();
유투브보기();
}
if (weather === "GOOD") {
운동();
빨래();
}
if (isJob) === "GOOD") {
야간업무();
조기취침();
유투브보기();
}
}
function 오늘하루(condition, weather, isJob) {
if (condition !== "GOOD") {
return
}
공부();
게임();
유투브보기();
if (weather !== "GOOD") {
return
}
운동();
빨래();
if (isJob !== "GOOD") {
return
}
야간업무();
조기취침();
유투브보기();
}
부정 조건문 지양하기👍
- 생각을 여러번 해야할 수 있다.
- 프로그래밍 언어 자체로 if문이 처음부터 오고 true부터 실행시킨다.
부정 조건 사용하는 예외
- Early Return
- Form Validation
- 보안 혹은 검사하는 로직
const isCondition = true;
const isNotCondition = false;
// NaN
// Not a Number
if(!isCondition) {
console.log("거짓인 경우에만 실행")
}
if(isNotCondition) {
console.log("거짓인 경우에만 실행")
}
function isNumber(num) {
return !Number.isNaN(num) && typeof num ==='number';
}
is(isNumber(3)) {
console.log('숫자입니다.')
}