// bad
const yyyymmdstr = moment().format('YYYY/MM/DD');
// good
const currentDate = moment().format('YYYY/MM/DD');
// bad
getUserInfo();
getClientData();
getCustomerRecord();
// good
getUser();
// bad
setTimeout(blastOff, 86400000);
// 86400000의 의미를 알 수 없다
// good
const MILLISECONDS_IN_A_DAY = 86400000;
setTimeout(blastOff, MILLISECONDS_IN_A_DAY);
// bad
const address = 'One Infinite Loop, Cupertino 95014';
const cityZipCodeRegex = /^[^,\\]+[,\\\s]+(.+?)\s*(\d{5})?$/;
saveCityZipCode(address.match(cityZipCodeRegex)[1], address.match(cityZipCodeRegex)[2]);
// good
const address = 'One Infinite Loop, Cupertino 95014';
const cityZipCodeRegex = /^[^,\\]+[,\\\s]+(.+?)\s*(\d{5})?$/;
const [, city, zipCode] = address.match(cityZipCodeRegex) || [];
saveCityZipCode(city, zipCode);
: 명시적인 것이 암시적인 것보다 좋다.
// bad
const locations = ['서울', '인천', '수원'];
locations.forEach(l => {
doStuff();
doSomeOtherStuff();
// ...
// ...
// ...
// 잠깐, `l`은 또 뭘까요?
dispatch(l);
});
// good
const locations = ['서울', '인천', '수원'];
locations.forEach(location => {
doStuff();
doSomeOtherStuff();
// ...
// ...
// ...
dispatch(location);
});
// bad
const Car = {
carMake: 'BMW',
carModel: 'M3',
carColor: '파란색'
};
function paintCar(car) {
car.carColor = '빨간색';
}
// good
const Car = {
make: 'BMW',
model: 'M3',
color: '파란색'
};
function paintCar(car) {
car.color = '빨간색';
}
: 기본 매개변수는 종종 short circuiting 트릭보다 깔끔하다. 기본 매개변수는 매개변수가 undefined
일때만 적용된다. '', "", false, null, 0, NaN
같은 falsy
한 값들은 기본 매개변수가 적용되지 않는다.
// bad
function createMicrobrewery(name) {
const breweryName = name || 'Hipster Brew Co.';
// ...
}
// good
function createMicrobrewery(name = 'Hipster Brew Co.') {
// ...
}