๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Book TIL

ํด๋ฆฐ์ฝ”๋“œ Day 8-9. ๋”๋Ÿฌ์šด ์ฝ”๋“œ ๊ณ ์น˜๊ธฐ

by vividmin 2022. 5. 3.
320x100

โœ… ์ด ํฌ์ŠคํŒ…์€ ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ถํด๋Ÿฝ  'ํด๋ฆฐ ์ฝ”๋“œ' ์ฑŒ๋ฆฐ์ง€๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ž‘์„ฑํ•˜๋Š” 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๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณ ์‹ฌํ•˜๋ฉด์„œ ์ž‘์„ฑํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ ์„ ๋Š๊ผˆ๋‹ค.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€