전체 글
[JavaScript][clean-code] 명시적인 연산자 사용 지향하기
* 명시적인 연산자 사용 지향하기 항상 괄호를 이용하여서 우선순위를 지정해주기 연산자 우선 순위를 외우기 보다는 괄호를 활용하여 사용한다. 증감연산자는 지양하고 명시적인 코드를 작성하는것이 좋다. 코드를 명시적으로 작성하자 ex) 몸무게 / (신장 * 신장) if ((isLogin && token) || user) 위의 예시처럼 괄호를 이용하여서 우선순위를 지정해주기 예측 가능하고 디버깅 하기 쉬운코드로 만들어준다. function increment(number) { // number++; (BAD) 명시적이지 않은 코드 // 좀 더 명시적이게 사용하기 number = number + 1; // (GOOD) } console.log(increment(2)); // 3
[JavaScript][clean-code] Default Case고려하기
* Default Case고려하기 - JS는 사용자와 상호작용하는 언어이다. 따라서 사용자의 입력을받을수도있고 사용자가 만질수도 있다. 그럴때마다 값이 변경되고 런타임 프로그램이 동작되는 시기도 무언가 결정이 될 수 있다. - 사용자에게 값을 얻지 못하였을때 어떠한 기본값을 둘지 정책을 정할 수 있다. (기본값을 정해놓을것은 매우 중요하다.) - 이를 edge case라고도 한다. - team의 core한 유틸리티 함수나 core한 라이브러리를 개발하는 팀은 항상 이런부분을 염두해 두어야 한다. (그래야 더욱더 안전하고 확장성 높은 코드를 작성할 수 있다.) * 기본값 설정 예시 코드 function sum(x, y) { x = x || 1 y = y || 1 return x + y; } sum(); o..
[JavaScript][clean-code] 부정 조건문 지양하기
* 부정 조건문 지양하기 * 부정조건문을 지양하는 이유 생각을 여러번 해야 할 수 있다.(가독성이 떨어진다.) ex) isNaN 프로그래밍 언어 자체로 if문은 true부터 실행시킨다. 따라서 흐름상 if문에 처음에 있는 조건이 true라고 생각이 든다. 근데 부정조건문을 처음에 넣게 되면 혼란이 올 수 있다. * 부정조건을 예외적으로 사용해야 하는 경우 Early Return Form Validation 보안 혹은 검사하는 로직 * 예시 (isNaN) - isNaN의 경우 한번 생각을 해야해서 헷갈리 수 있다. 차라리 typeof를 사용하는게 가독성이 더 좋을 수 있다. 혹은 isNaN과 typeof를 사용하는 함수를 만든다. function isNumber(num) { return !Number.is..
[JavaScript][clean-code] Early Return
* 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문이 계..
[JavaScript][clean-code] else if & else피하기
* else if 피하기 else if 를 promise의 then chaning처럼 생각하는 경우가 있다. 따라서 else if가 늘어질 경우 switch문으로 대처하는게 맞다. else if를 이용하는것보다 명확하게 조건을 구분하는것이 더 좋다. * else if는 파이프라인처럼 흐르는게 아닌 else처리를 하고 한번 더 if문이 동작하는 것이다. 두 코드는 완전히 동일하게 동작하는 코드이다. count x = 1; if (x >=0) { 'x는 0과 같거나 크다'; } else if (x > 0) { 'x는 0보다 크다'; } if (x >=0) { console.log('x는 0과 같거나 크다'); } else { if (x > 0) { console.log('x는 0보다 크다.'); } } * ..
[JavaScript][clean-code] 단축평가(short-circuit evaluation)
* 단축평가(short-circuit evaluation) - AND true && true && '도달 성공' // '도달 성공' true && false && '도달 x' // false false에 의해 막힘 false가 확인되어 해당 값은 false - OR false || false || '도달 성공' // '도달 성공' true || true || '도달 실패' // true true에 의해 막힘 첫번째 값이 참이므로 뒤에 값은 확인하지 않는다. * 단축평가하기 좋은 경우 - 기본값(default value)을 표현할 때 가장 편리하다. * 단축평가 예시코드 (OR) // before function fetchData() { if (state.data) { return state.data; }..