클린코드 자바스크립트 3-1 경계 다루기(min-max,begin-end,first-last,접두사와 접미사, 매개변수 순서가 경계)
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)
경계 다루기 😎
min-max👍
- 최소값과 최대값을 다룬다.
- 포함 여부를 결정해야 한다(이상-초과 / 이하-미만)
- 혹은 네이밍에 최소값 최대값 포함 여부를 작성한다.
function genRandomNumber(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
const MIN_NUMBER = 1;
const MAX_NUMBER = 45;
// MAX_NUMBER_LIMIT 초과
// MAX_IN_NUMBER 포함
const result = genRandomNumber(MIN_NUMBER, MAX_NUMBER);
console.log(result);
const MAX_AGE = 20;
function isAdult(age) {
// 최소값, 최대값 (포함되는지 vs 안되는지)
// 이상, 초과 vs 이하, 미만
if(age>=20) {
return;
}
Begin-End👍
- 경계를 포함하지만 제외하는 경우
- 달력, 에어비엔비와 같은 출국,입국일을 생각하면 쉽다.
function reservationDate(beginDate, endDate) {
// ....some code
return;
}
reservationDate("YYYY-MM-DD", "YYYY-MM-DD");
First-Last👍
- 포함된 양 끝을 의미한다.
- 포함되어 있는 규칙이나 연속성에 대해 보장 X
- 부터 ~~~ 까지
const students = ["A", "B", "C"];
function getStudents(first, last) {
// ...some code
}
getStudents(students[0], students[2]);
Prefix(접두사) - Suffix(접미사)의 중요성 (규칙) 👍
- JS의 prefix getter, setter
- React usePrefix (기본 Hooks, useState,useEffect …)
- jQuery prefix $
매개변수 순서가 경계 👍
호출하는 함수의 네이밍과 인자의 순서의 연관성을 고려한다.
- 매개변수를 2개가 넘지 않도록 만든다.
- arguments, rest parameter 사용
- 랩핑하는 함수 사용
- 매개변수를 객체로 담아서 넘긴다
function someFunc(someArg1, someArg2, someArg1, someArg2) {}
function getFunc(someArg3, someArg4) {
// 많이 쓰는 매개변수 일 경우 이렇게 들고온다.
someFunc(undefined, undefined, someArg3, someArg4);
}
function someFunc2({ someArg1, someArg2, someArg1, someArg2 }) {}
getRandomNumber(1, 50);
getDates("2021-01-01", "2021-12-31");
shuffleArray(1, 5);