โ ์ด ํฌ์คํ ์ ๋ ธ๋ง๋ ์ฝ๋ ๋ถํด๋ฝ 'ํด๋ฆฐ ์ฝ๋' ์ฑ๋ฆฐ์ง๋ฅผ ์งํํ๋ฉด์ ์์ฑํ๋ TIL์ด๋ฉฐ, ์ถ์ฒ๋ Clean Code์ ๋๋ค.
๐ ๋ฏธ์ : ์์์ ๋๋ฌ์ด ์ฝ๋๋ฅผ ์์ ํ๊ณ ๊ณ ์น ์ด์ ์, ๋ฐฐ์ด ์ ์ ์ด๋ณด๊ธฐ
๐ฅ Mission 1
1. BAD ๋๋ฌ์ด ์ฝ๋ ๐ฃ
- Hintโ : ๊ฒ์ํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ์ฌ์ฉํ์ธ์.
- blastOFF๋ ๋ก์ผ ๋ฐ์ฌ๋ฅผ ์๋ฏธ. 86400000์ ํ๋ฃจ์ ๋ฐ๋ฆฌ์ด (milliseconds) ์๋ฏธ.
// What the heck is 86400000 for?
setTimeout(blastOff, 86400000);
2. GOOD ๐ ์ ์ฝ๋๋ฅผ ๊นจ๋ํ๊ฒ ๋ค์ ์์ฑํด ์ฃผ์ธ์.
const MILLISECONDS_OF_A_DAY = 86400000;
setTimeout(blastOff, MILLISECONDS_OF_A_DAY);
3. ์ด๋ป๊ฒ ๊ณ ์ณค๋์ง, ์ฌ๋ก์์ ๋ฌด์์ ๋ฐฐ์์ผ ํ๋์ง ์ค๋ช
ํด์ฃผ์ธ์.
[๊ณ ์น ๋ฐฉ๋ฒ]
setTimeout 86400000์ด ms ๋จ์์ ์๊ฐ์ด๋ผ๋ ๊ฒ์ ์ ์ ์์ง๋ง, ๊ทธ๋ฅ ์ซ์๋ง ๋ด์๋ ๋ฌด์์ ์๋ฏธํ๋์ง ์๋ฟ์ง ์์๋ค. 86400000๊ฐ ํ๋ฃจ์ ๋ฐ๋ฆฌ์ด๋ฅผ ์๋ฏธํ๋ ์๊ฐ์ด๋ผ๋ ๊ฒ์ ์๊ณ , ํ๋ฃจ์ ๋ฐ๋ฆฌ ์ด๋ฅผ ๊ฒ์ํด๋ณด๋ milliseconds of a day๋ผ๊ณ ํํํ๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์๋ค.
๋ฐ๋ผ์ 86400000์ ๋ณ์๋ก ์ ์ธํ ํ setTimeout ํจ์๋ ๊ณ ์ณ์ฃผ์ด์ ๋ก์ผ ๋ฐ์ฌ๊ฐ ๋ฐ๋ณต๋ ์๊ฐ์์ ์๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด์ฃผ์๋ค.
[๋ฐฐ์ด ์ ]
ํญ์ ์ฝ๋๋ฅผ ์์ฑํ ๋ ๋ค๋ฅธ ์ฌ๋์ด ์ฝ์ด๋ ํ๋์ ์ดํดํ ์ ์๋๋ก ์์ฑํ๋ ๊ฒ์ด ์ค์ํ๋ค๋ ๊ฒ์ ๋๊ผ๋ค.
86400000 ms๊ฐ ํ๋ฃจ์ ๋ฐ๋ฆฌ ์ด๋ฅผ ์๋ฏธํ๋ค๋ ์ ์ ๊ฒ์ํด๋ณด๋ฉด ์ ์๋ ์๊ฒ ์ง๋ง, ๊ฒ์์ ํด์ ์ ์ ์๋ ์ฝ๋๋ ์ข์ ์ฝ๋๊ฐ ์๋๋ค.
๋๋ ์ฝ๋๋ฅผ ์์ฑํ ๋ ๋๋ง์ ์ฉ์ด๊ฐ ์๋ ๋๊ตฌ๋ ์ดํดํ ์ ์๋ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋๋ก ๋
ธ๋ ฅํด์ผ๊ฒ ๋ค๊ณ ๋๊ผ๋ค.
๐ฅ Mission 2
1. BAD ๋๋ฌ์ด ์ฝ๋ ๐ฃ
- Hintโ : ์๋ฏธ ์๋ ์ด๋ฆ์ ์ฌ์ฉํด์ฃผ์ธ์.
const yyyymmdstr = moment().format("YYYY/MM/DD");
2. GOOD ๐ ์ ์ฝ๋๋ฅผ ๊นจ๋ํ๊ฒ ๋ค์ ์์ฑํด ์ฃผ์ธ์.
const currentDate = moment().format("YYYY/MM/DD");
3. ์ด๋ป๊ฒ ๊ณ ์ณค๋์ง, ์ฌ๋ก์์ ๋ฌด์์ ๋ฐฐ์์ผ ํ๋์ง ์ค๋ช
ํด์ฃผ์ธ์.
[๊ณ ์น ๋ฐฉ๋ฒ]
์์ ์ yyyymmdstr์ ์ฐ๋, ์, ์ผ์ ์๋ฏธํ๋ค๋ ๊ฒ์ ์ ์ ์์ง๋ง, ์ด๋ค ๋ ์ง๋ฅผ ์๋ฏธํ๋์ง๋ ์ ์ ์์๋ค. ๋จผ์ moment()๋ฅผ console์ ์
๋ ฅํด๋ดค๋๋ฐ 'moment๋ ์ ์๋์ง ์์ ํจ์'๋ผ๊ณ ๋์๋ค.
๊ทธ๋ผ ๋ค๋ฅธ ์๋ฏธ๊ฐ ์๋ ๊ฒ์ธ์ง ๊ตฌ๊ธ์ ๊ฒ์ํด๋ณด๋ JS๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์ moment.js๋ผ๋ ๊ฒ์ด ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค.
moment.js์์ moment( )๋ ํ์ฌ ๋ ์ง์ ์๊ฐ์ ์์ฑํ๋ ํจ์์๋ค.
์ฆ, ์์ ์ฝ๋๊ฐ ์๋ฏธํ๋ ๊ฒ์ ํ์ฌ ๋ ์ง์ ์๊ฐ์ YYYY/MM/DD์ ํํ๋ก ๋ฐ๊พธ์ด ์ฃผ๋ ๋์์ ํ๋ ํจ์๋ผ๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ yyyymmdstr๋์ , ํ์ฌ ๋ ์ง๋ฅผ ์๋ฏธํ๋ currentDate์ผ๋ก ๋ฐ๊พธ์ด ์๋ฏธ๋ฅผ ๋ฐ๋ก ์ ์ ์๋๋ก ๋ฐ๊พธ์ด์ฃผ์๋ค.
[๋ฐฐ์ด ์ ]
moment.js๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์๊ณ , moment( )์ ์๋ฏธ๋ ๋ฐฐ์ ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ ํ๋ฒ ๋๋ผ์ง๋ง, ์๋ฌด๋ฆฌ ๊ธํด๋ ์๋ฏธ ์๊ณ , ๊นจ๋ํ์ง ์์ ์ฝ๋๋ฅผ ์์ฑํ์ง ๋ง์์ผ๊ฒ ๋ค๋ ๊ฒ์ ๋๊ผ๋ค. ๊ฒฐ๊ตญ ๋์ ์ฝ๋๋ฅผ ๊ณ ์น๋ ค๋ฉด ๋ ์๊ฐ์ด ๋ค๊ธฐ ๋๋ฌธ์ ์ฒ์๋ถํฐ ์ ์๊ฐํด์ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์๊ฐ์ ์๋ผ๋ ์ผ์ด๋๊น.
๐ฅ Mission 3
1. BAD ๋๋ฌ์ด ์ฝ๋ ๐ฃ
- Hintโ : ๋ถํ์ํ๊ฒ ๋ฐ๋ณตํ์ง ๋ง์ธ์.
const Car = {
carMake: "Honda",
carModel: "Accord",
carColor: "Blue"
};
function paintCar(car, color) {
car.carColor = color;
}
2. GOOD ๐ ์ ์ฝ๋๋ฅผ ๊นจ๋ํ๊ฒ ๋ค์ ์์ฑํด ์ฃผ์ธ์.
const Car = {
make: "Honda",
model: "Accord",
color: "Blue"
};
function paintCar(car, color) {
car.color = color;
}
3. ์ด๋ป๊ฒ ๊ณ ์ณค๋์ง, ์ฌ๋ก์์ ๋ฌด์์ ๋ฐฐ์์ผ ํ๋์ง ์ค๋ช
ํด์ฃผ์ธ์.
[๊ณ ์น ๋ฐฉ๋ฒ]
์์์ ๋์ค๋ Car object๋ ์๋์ฐจ์ ์์ฐํ์ฌ, ๋ชจ๋ธ๋ช
, ์์์ ๋ํ๋ด๋ object์ด๊ณ ๋ชจ๋ ์ฐจ์ ๊ด๋ จ๋ ๋ด์ฉ๋ค๋ก ๊ตฌ์ฑ๋์ด ์์๋ค.
์ด๋ฏธ 3๊ฐ์ key๋ค์ด 'car'๋ผ๋ ๊ณตํต์ ์ ๊ฐ์ง๊ณ ์๋ค๋ ๊ฒ์ object์ด๋ฆ๋ง ๋ด๋ ์ ์ ์๋๋ฐ, key์ ๋ car๋ฅผ ์ ์ ํ์๋ ์๋ค๊ณ ํ๋จ๋์ด์ make, model, color๋ก ์์ ํด์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ ์๋์ pintCarํจ์์๋ ์์ Car {}์ Carcolor๋ฅผ color๋ก ๋ณ๊ฒฝํ์ผ๋๊น, ๋๊ฐ์ด car.Carcolor์์ car.color๋ก ๋ณ๊ฒฝํด์ฃผ์๋ค. console์์ Car.color๋ฅผ ์ํํด๋ณด๋ Blue์์ ๋ด๊ฐ ์ง์ ํ ์์ผ๋ก ๋ฐ๋๋ ๊ฒ์ ๋ณผ ์ ์์๋ค.
[๋ฐฐ์ด ์ ]
์ ์ ๊ฐ์๋ฅผ ๋ค์ ๋ ๋ณ์ ์ ์ธ ์ ๊ณตํต๋ ์ ์ด ์๋ค๋ฉด ๊ฐ๊ฐ์ ๋ฐ๋ก ๋ณ์ ์ ์ธํ๋ ๊ฒ๋ณด๋ค object๋ก ๋ฌถ๋ ๊ฒ์ด ๋ณด๊ธฐ์ ๊ณตํต๋ ์ ์ ๊ฐ์ง๊ณ ์๋ค๋ ๊ฒ์ ํํํ๊ธฐ์ ๋ ์ข๊ณ , ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์๋ค๊ณ ๋ฐฐ์ ๋๋ฐ, ์ด๋ฒ์ ์ค์ ๋ก ์ฌ์ฉํด ๋ณด๋ ๋์ฑ ์๋ฟ์๋ค.
ํ์ง๋ง ๋จ์ํ object๋ก ๋ฌถ๋ ๊ฒ์ด ๋์ด ์๋๊ณ , ๋ณ์ ์ด๋ฆ ์์ฑ ์ ์ค๋ณต๋๋ ๋ถ๋ถ์ ๋ ์ธ ํ์ ์์ด ์๋ตํด์ผ ํ๋ค. ์๋๋ฉด object๋ก ์์ฑํ๋ ๊ฒ์ ์ฅ์ ์ด ์ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ด๋ค.
์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ ๋ ๊นจ๋ํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋๋ก ๊ณ ๋ คํ๋ฉด์, ์ค๋ณต๋ ์ค์ฌ์ ์ง์ ํ Clean Code๋ฅผ ์์ฑํ ์ ์๋๋ก ๊ณ ์ฌํ๋ฉด์ ์์ฑํด์ผ๊ฒ ๋ค๋ ์ ์ ๋๊ผ๋ค.
'Book TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํด๋ฆฐ์ฝ๋ Day 12. ๊ฐ์ฒด์ ์๋ฃ๊ตฌ์กฐ (0) | 2022.05.04 |
---|---|
ํด๋ฆฐ์ฝ๋ Day 11. ํ์ ๋ง์ถ๊ธฐ (0) | 2022.05.03 |
ํด๋ฆฐ์ฝ๋ Day 7-8. ์ฃผ์ ์ฐ๋ ๋ฐฉ๋ฒ (0) | 2022.04.30 |
ํด๋ฆฐ์ฝ๋ Day 5-6. ํจ์ ์ฌ์ฉ ์ ์ฃผ์ํ ์ ๋ค (0) | 2022.04.28 |
ํด๋ฆฐ์ฝ๋ Day 4. ์ต์ ๋ถ ํธ ์ฐพ๊ธฐ ๐ (0) | 2022.04.26 |
๋๊ธ