Study

    [JavaScript][clean-code] 드 모르간의 법칙

    [JavaScript][clean-code] 드 모르간의 법칙

    * 드 모르간의 법칙 const isValidUser = true; // 서버에서 넘어온 값 const isValidToken = true; // 서버에서 넘어온 값 if (isValidToken && isValidUser) { console.log('로그인 성공!'); } 만약 '로그인 실패'를 만들거면?? 그럼 기본 로직이나 플래그 값을 활용할 수 밖에 없다. 왜냐면 해당 값들은 서버에서 받아온 값들이기 때문에 해당 코드는 실제로 유저와 소통하고 있는 코드이기 때문이고 검증된 코드이기 때문에 해당 코드를 활용해야함 const isValidUser = false; const isValidToken = false; // if (!(A && B)) { // 성공 // } // 위 아래의 경우는 동일하다. ..

    [JavaScript][clean-code] Nullish coalescing operator

    * Nullish coalescing operator(Null 병합 연산자) (비교적 최근문법 예전에 나온 레거시형 브라우저에서는 돌아가지 않을 수 있다.) function createElement(type, height, width) { const element = document.createElement(type || 'div'); element.style.height = String(height || 10) + 'px'; element.style.width = String(width || 10) + 'px'; return element; } - 만약 width와 height값을 0이라는 값을 주게 된다면? const el = createElement('div', 0, 0); el.style.heig..

    [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문이 계..