TIL

[TIL] 20210811

lado 2021. 8. 12. 13:54

๐ŸŽฏ ์›”ํ™”์ˆ˜์— ๊ณต๋ถ€ํ•œ ๊ฒƒ

  • [ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ] ์ œ๋„ˆ๋ ˆ์ดํ„ฐ์™€ ์ดํ„ฐ๋ ˆ์ดํ„ฐ
  • [ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ] map, filter, reduce, go, pipe, curry, range, take
  • [ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ] ์ง€์—ฐ ํ‰๊ฐ€
  • [JavaScript] ๋น„๊ตฌ์กฐํ™” ํ• ๋‹น

๐Ÿ”ง ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ํ†ตํ•ด ๋ฐฐ์šด ๊ฒƒ

  • const, let ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜๊ธฐ
    • JavaScript์—์„œ ๋ฐฐ์—ด, ๊ฐ์ฒด๋Š” ์ฐธ์กฐํ˜• ํƒ€์ž…์ด๊ธฐ ๋•Œ๋ฌธ์— const๋กœ ์„ ์–ธํ•˜๊ณ  ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด ๋‚ด์˜ ๊ฐ’์„ ์ˆ˜์ •ํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค. const๋กœ ์„ ์–ธํ•˜์ž.

 

  • ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ณ ๋ฏผํ•ด๋ณด๊ธฐ
    • ๊ฒ€์ƒ‰์–ด ๋ฆฌ์ŠคํŠธ์— ์—†๋Š” ๊ฐ’์„ ๋„ฃ์—ˆ์„ ๋•Œ, ๊ฒ€์ƒ‰์–ด ๋ฆฌ์ŠคํŠธ์— ์žˆ๋Š” ๊ฐ’๋ณด๋‹ค ๋” ํฐ ๋ฌธ์ž์—ด์„ ๋„ฃ์—ˆ์„ ๋•Œ, ์ž…๋ ฅํ•œ ๊ฐ’์— ๊ณต๋ฐฑ์ด ์žˆ์„ ๊ฒฝ์šฐ ๊ณต๋ฐฑ ์ œ๊ฑฐ ๋“ฑ

 

  • ๋ณ€์ˆ˜ ๋ช…๋ช… ์ปจ๋ฒค์…˜ ๊ณ ๋ คํ•˜๊ธฐ [์ฐธ๊ณ ๋ฌธ์„œ]
    • ํ•จ์ˆ˜๋ช…, ๋ณ€์ˆ˜๋ช… -> camelCase
    • class, struct, ์ƒ์„ฑ์ž ํ•จ์ˆ˜ -> PascalCase
    • ์ƒ์ˆ˜ ๊ฐ’ -> UPPER_SNAKE_CASE
    • ์ง€์—ญ ๋ณ€์ˆ˜ / private ๋ณ€์ˆ˜ -> ์–ธ๋”๋ฐ”(_)๋กœ ์‹œ์ž‘

 

  • ๋” ์ •ํ™•ํ•œ ํ‘œํ˜„ ๊ณ ๋ฏผํ•˜๊ธฐ
    • while(stack.length !== 0) ๋ณด๋‹ค๋Š” while(stack.length > 0)
    • this.root === null ๋ณด๋‹ค๋Š” if(!this.root) : null, undefined ๋‘˜ ๋ชจ๋‘ ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค

 

  • ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๊ฐ€ ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ๋งŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฉ”์†Œ๋“œ ๋ถ„๋ฆฌ
  • ํ•œ ๋ˆˆ์— ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์ฒด์ ์ด๊ณ  ๋ช…ํ™•ํ•œ ๋ณ€์ˆ˜๋ช… ์ง“๊ธฐ
  • class์—์„œ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•  ๋•Œ arrow function ์‚ฌ์šฉ ์ง€์–‘ [์ฐธ๊ณ ๋ฌธ์„œ]
  • if๋ฌธ์—์„œ ํ•œ ์ค„ ์งœ๋ฆฌ ์ฝ”๋“œ์˜ ๊ฒฝ์šฐ, {}๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฐ€๋…์„ฑ ์ธก๋ฉด์—์„œ {}๋ฅผ ์ƒ๋žตํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋” ์„ ํ˜ธํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. [์ฐธ๊ณ ๋ฌธ์„œ]
  • return ๊ฐ’์— ๋Œ€ํ•ด์„œ
    • return false;์™€ return;์€ ๋‹ค๋ฅด๋‹ค!
    • ์ถœ๋ ฅ๋งŒ ํ•˜๊ณ  return ๊ฐ’์€ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์„ ๋•Œ
    • // bad
      return console.log("๋");
      
      // good
      console.log("๋");
      return;
    • ์—๋Ÿฌ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ์„ ๋•Œ
    • // bad
      // ํ•œ ํ•จ์ˆ˜ ์•ˆ์—์„œ ๋ฐ˜ํ™˜ํ˜•์ด ํ˜ผ์žฌ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š์Œ
      
      const result = []; // ๊ฒฐ๊ณผ๊ฐ’์„ ๋‹ด์„ ๋ฐฐ์—ด
      
      if (๊ฒ€์ƒ‰์–ด ๋ฆฌ์ŠคํŠธ์— ์—†๋Š” ๊ฐ’์„ ์ž…๋ ฅํ–ˆ๋‹ค๋ฉด) {
          return "๊ฐ’์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.";
      } else if (๊ฒฐ๊ณผ๋ฅผ ์ œ๋Œ€๋กœ ๋„์ถœํ–ˆ๋‹ค๋ฉด) {
          return result;
      }
      
      // good
      // ํ•œ ํ•จ์ˆ˜ ์•ˆ์—์„œ ๋ฐ˜ํ™˜ํ˜•์„ ํ†ต์ผํ•ด์ฃผ๊ณ  ์—๋Ÿฌ๋Š” ๋”ฐ๋กœ ๋˜์ ธ์ฃผ๋Š” ๊ฒƒ์ด ์ข‹์Œ
      
      const result = []; // ๊ฒฐ๊ณผ๊ฐ’์„ ๋‹ด์„ ๋ฐฐ์—ด
      
      if (๊ฒ€์ƒ‰์–ด ๋ฆฌ์ŠคํŠธ์— ์—†๋Š” ๊ฐ’์„ ์ž…๋ ฅํ–ˆ๋‹ค๋ฉด) {
          console.error('๊ฐ’์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.');
          return [];
      } else if (๊ฒฐ๊ณผ๋ฅผ ์ œ๋Œ€๋กœ ๋„์ถœํ–ˆ๋‹ค๋ฉด) {
          return result;
      }

๐Ÿ“š ์ •๋ฆฌํ•ด์•ผ ํ•  ๊ฒƒ

  • Map๊ณผ Set
  • ์ œ๋„ˆ๋ ˆ์ดํ„ฐ์™€ ์ดํ„ฐ๋ ˆ์ดํ„ฐ
  • ๋น„๊ตฌ์กฐํ™” ํ• ๋‹น
  • ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
  • ์ด ๊ฒŒ์‹œ๊ธ€์— ๋‚˜์˜ค๋Š” ์งˆ๋ฌธ๋“ค์— ๋Œ€ํ•œ ๋‹ต๋ณ€ ์ฐจ๊ทผ์ฐจ๊ทผ ์ •๋ฆฌํ•˜๊ธฐ

๐ŸŽ‡ Reflection

  • ๋ฐฐ์šด ๊ฒƒ์€ ๋˜๊ฒŒ ๋งŽ์€๋ฐ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•˜๋‹ˆ๊นŒ ์—„๋‘๊ฐ€ ์•ˆ๋‚˜์„œ ์ •๋ฆฌ๋ฅผ ๋ชปํ–ˆ๋‹ค. ์ง€๊ธˆ ๊ฐ•์˜๊ฐ€ ๋„ˆ๋ฌด ๋ฐ€๋ ค ์žˆ์–ด์„œ ์ •๋ฆฌํ•  ์—ฌ์œ ๊ฐ€ ์—†๋Š”๋ฐ ๋‹ค์Œ์ฃผ ์›”์š”์ผ์—๋Š” ๋ฒ„ํผ ์‹œ๊ฐ„์„ ๊ฐ–๋Š”๋‹ค๊ณ  ํ•˜๋‹ˆ๊นŒ ์ฃผ๋ง ์‚ฌ์ด์— ์ข€ ์ •๋ฆฌํ•ด๋ด์•ผ๊ฒ ๋‹ค.
  • ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ 1์ผ์ฐจ๋Š” ์žฌ๋ฐŒ๊ฒŒ ๋“ค์—ˆ๋Š”๋ฐ 2์ผ์ฐจ๋Š” ์Œ? ์‹ถ๋‹ค๊ฐ€ 3์ผ์ฐจ์—์„œ ํ—‰... ํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ๋‹ค. ๊ทธ๋ž˜์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•จ์ˆ˜ํ˜•์œผ๋กœ ํ•ด์•ผ ํ•˜๋ƒ, ๊ฐ์ฒด ์ง€ํ–ฅ์œผ๋กœ ํ•ด์•ผ ํ•˜๋ƒ ํ•˜๋Š” ์งˆ๋ฌธ์ด ์ƒ๊ธฐ๋Š”๋ฐ ๋‹ต๋ณ€์€ ๋‘˜ ๋‹ค ์ ์ ˆํžˆ ํ˜ผํ•ฉํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๊ณ ..... ์ด ๋‹ต๋ณ€์„ ๋“ค์œผ๋‹ˆ ๋” ๋ชจ๋ฅด๊ฒ ๋‹ค!
  • ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์–ด์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์˜ฌ๋ฆฐ PR์„ ๋ดค๋Š”๋ฐ ๋˜๊ฒŒ ๋งŽ์ด ๋ฐฐ์› ๋‹ค. ์ด๋ž˜์„œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ, ์ฝ”๋“œ ๋ฆฌ๋ทฐ ํ•˜๋‚˜ ๋ณด๋‹ค.
  • ๋งˆ์ง€๋ง‰ ์ƒ๋‹ด์„ ํ–ˆ๋Š”๋ฐ ๊ธฐ๋ถ„์ด ์‹ฑ์ˆญ์ƒ์ˆญํ•ด์ ธ์„œ ๋ณ„๋กœ ๊ณต๋ถ€๋ฅผ ๋ชปํ–ˆ๋‹ค. ๋‚˜๋Š” ์‚ฌ๋žŒ๋“คํ•œํ…Œ ๊ธฐ๋Šฅ ๋ง๊ณ  ์กด์žฌ๋กœ ๋ณด์ด๊ธฐ๋ฅผ ์›ํ•˜๋Š”๋ฐ ์˜คํžˆ๋ ค ๋‚˜๋Š” ๋‚˜๋ฅผ ๊ธฐ๋Šฅ์œผ๋กœ ๋ณด์—ฌ์ฃผ๋ ค๋Š” ์„ฑํ–ฅ์ด ์žˆ๋‹ค๋Š” ๋ง์„ ๋“ค์—ˆ๋‹ค. ์—„์ฒญ ๊ณต๊ฐ์ด ๋๊ณ  ์–ด๋–ป๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ์„์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์–ด์„œ ๋˜๊ฒŒ ์Šฌํސ๋‹ค.
  • ๋‚จ์—ฌ์„ผ์—์„œ ์ค€๋น„ํ•ด์ฃผ์‹  30๋ถ„์งœ๋ฆฌ ๋ฉด์ ‘ ์ปจ์„คํŒ…์— ์ฐธ์—ฌํ–ˆ๊ณ  ๊ธฐ์ˆ  ๋ฉด์ ‘์„ ์œ„ํ•ด ํ•„์ˆ˜ ๊ฐœ๋…๋“ค์„ ์ดํ•ดํ•˜๊ณ  ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ ๋‚ด์šฉ์„ ์ž˜ ์ •๋ฆฌํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.
  • ๋ฉ˜ํ† ๋‹˜๊ณผ ๋ฉ˜ํ† ๋ง์„ ํ–ˆ๋‹ค. ๊ฐ•์˜ ๋“ค์œผ๋ฉด์„œ ํ˜ผ์ž ์ฝ”๋“œ ์ณ๋ณด๊ณ  ํ•˜๋Š” ๊ฒƒ๋“ค์„ ์šฐ์„  ๊ทธ๋ƒฅ github์— ์˜ฌ๋ ค๋ด์•ผ๊ฒ ๋‹ค. ๋ฉ˜ํƒˆ ๋ฐ”์‚ฌ์‚ญ์ด ๋์„ ๋•Œ๋Š” ๋‹ฌ๋ฆฌ๊ธฐ๋ฅผ ํ•ด๋ณด์ž! ์ „์—๋Š” ์ŠคํŠธ๋ ˆ์Šค ์Œ“์ด๋ฉด ์ฝ”์ธ๋…ธ๋ž˜๋ฐฉ ๊ฐ€๊ฑฐ๋‚˜ ์ž์ „๊ฑฐ ๋ผ์ด๋”ฉํ•˜๊ฑฐ๋‚˜ ํ•˜๋ฉด์„œ ํ’€์—ˆ๋Š”๋ฐ ์ด์ œ๋Š” ์ฝ”์ธ๋…ธ๋ž˜๋ฐฉ๋„ ๋ชป๊ฐ€๊ณ  ๋‚ด๊ฐ€ ๋„ˆ๋ฌด ์‚ฐ๊ผญ๋Œ€๊ธฐ์— ์‚ด์•„์„œ ์ง‘์— ์˜ฌ๋•Œ ์ž์ „๊ฑฐ ๋Œ๊ณ  ์ง‘๊นŒ์ง€ ๋“ฑ๋ฐ˜ํ•  ์ƒ๊ฐํ•˜๋ฉด ์ž์ „๊ฑฐ ๋ผ์ด๋”ฉ์„ ์‹œ๋„ํ•  ์—„๋‘๊ฐ€ ์•ˆ๋‚œ๋‹ค. ๊ทธ๋ž˜๋„ ๋‚ ์ด ๋” ์„ ์„ ํ•ด์ง€๋ฉด ์ž์ „๊ฑฐ ํƒ€๋Š” ๊ฒƒ๋„ ๋‹ค์‹œ ์‹œ๋„ํ•ด๋ด์•ผ๊ฒ ๋‹ค.

'TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[WIL] 20210815 2์ฃผ์ฐจ ํšŒ๊ณ   (0) 2021.08.15
[TIL] 20210814  (0) 2021.08.14
[WIL] 20210808 1์ฃผ์ฐจ ํšŒ๊ณ   (2) 2021.08.08
[TIL] 20210803  (4) 2021.08.04
[TIL] 20210802  (2) 2021.08.02