3장. 함수
더러운 코드를 클린 코드로 바꾸는 과제가 있었다. 총 3문제로, 1번의 경우 SHINMJ1님의 리팩토링을 참고하였다.
// BAD 더러운 코드 😣
// Hint❕ : 검색하기 쉬운 이름을 사용하세요.
// blastOFF는 로켓 발사를 의미. 86400000은 하루의 밀리초 (milliseconds) 의미.
// What the heck is 86400000 for?
setTimeout(blastOff, 86400000);
// GOOD 😎
// 위 코드를 깨끗하게 다시 작성해 주세요.
const ONE_DAY_MILLISECONDS = 60 * 60 * 24 * 1000;
setTimeout(blastOff, blastOffTime);
// 어떻게 고쳤는지, 사례에서 무엇을 배워야 하는지 설명해주세요.
/**
# 어떻게 고쳤는지
1. 변수명 수정
- blastOFF -> rocketLaunch
blastOFF 는 '발사' 라는 의미로 미사일 혹은 총기 발사라는 의미에 쓰이기도 해서 명확하지 않다.
의미를 명확하게 '로켓 발사' 라는 변수로 수정하였다.
2. 매직넘버를 상수로 선언
- 86400000 -> ONE_DAY_MILLISECONDS
매직넘버는 왠만하면 사용하지 않도록 한다.
주석을 달지 않으면 잘 모르는 사람이 보면 의미를 전혀 알 수 없기 때문이다.
의미를 명확하게 알 수 있도록 'ONE_DAY_MILLISECONDS' 라는 이름을 붙여 주었다.
또한, 하루의 밀리초는 변하지 않을 것이므로 상수로 선언하였다.
# 무엇을 배워야 하는지
매직넘버를 사용하지 말자!!
매직넘버는 전혀 의미를 알 수 없다. 또한 검색하기도 쉽지 않다.
그리고 수정된다면 다 바꾸어야 하는데 그게 같은 의미인지 포함된 모든 코드를 보아야 한다.
**/
// BAD 더러운 코드 😣
// Hint❕ : 의미있는 이름을 사용해주세요.
const yyyymmdstr = moment().format("YYYY/MM/DD");
// GOOD 😎
// 위 코드를 깨끗하게 다시 작성해 주세요.
const currentDate = moment().format("YYYY/MM/DD");
// 어떻게 고쳤는지, 사례에서 무엇을 배워야 하는지 설명해주세요.
//yyyymmdstr이라는 변수명은 한번에 그 의미를 받아들이기 힘들기때문에, 이런 코드는 내용 파악이 쉽게끔 변수명을 지어줘야한다.
// BAD 더러운 코드 😣
// Hint❕ : 불필요하게 반복하지 마세요.
const Car = {
carMake: "Honda",
carModel: "Accord",
carColor: "Blue"
};
function paintCar(car, color) {
car.carColor = color;
}
// GOOD 😎
// 위 코드를 깨끗하게 다시 작성해 주세요.
const Car = {
make: "Honda",
model: "Accord",
color: "Blue"
};
function paintCar(car, color) {
car.carColor = color;
}
// 어떻게 고쳤는지, 사례에서 무엇을 배워야 하는지 설명해주세요.
// 이미 Car 객체에 속하는 변수들이기 때문에 굳이 변수명을 car...으로 표현할 필요가 없다.
// 불필요한 맥락을 추가하지 말자!