๐Ÿ“˜ํด๋ฆฐ์ฝ”๋“œ (2022.01.26) - ํ•จ์ˆ˜ (1)

์‹ ์œค์ฒ ยท2022๋…„ 1์›” 26์ผ
0

ํด๋ฆฐ์ฝ”๋“œ

๋ชฉ๋ก ๋ณด๊ธฐ
5/22

DAY 6

์˜ค๋Š˜ ์ฝ์€ ๋ฒ”์œ„

3์žฅ ํ•จ์ˆ˜ ~ 54p

๐Ÿ˜ƒ ์ฑ…์—์„œ ๊ธฐ์–ตํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ์„ ์จ๋ณด์„ธ์š”.

  • ์ž‘๊ฒŒ ๋งŒ๋“ค์–ด๋ผ

    • ๊ธ€์“ด์ด์˜ ์˜ค๋žœ ๊ฒฝํ—˜์„ ํ†ตํ•œ ๊ฒฐ๋ก ์€ ํ•จ์ˆ˜๋Š” 20์ค„๋„ ๊ธธ๋‹ค!
    • ์ค‘์ฒฉ ๊ตฌ์กฐ๋Š” 1๋‹จ์ด๋‚˜ 2๋‹จ์„ ๋„˜์–ด์„œ๋ฉด ์•ˆ๋œ๋‹ค.
  • ํ•œ ๊ฐ€์ง€๋งŒ ํ•ด๋ผ!

    • 1์žฅ๋ถ€ํ„ฐ ๊พธ์ค€ํžˆ ๋‚˜์˜จ ๋ง์ด์ง€๋งŒ ํ•œ ๊ฐ€์ง€ ํ•จ์ˆ˜๋Š” ํ•œ ๊ฐ€์ง€๋ฅผ ํ•ด์•ผํ•˜๊ณ  ๊ทธ๊ฒƒ์„ ์ž˜ํ•ด์•ผํ•œ๋‹ค.
    • ํ•œ ๊ฐ€์ง€๋ผ๋Š” ๊ฒƒ์€ ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ํ•˜๋‚˜์ธ ๋‹จ๊ณ„๋งŒ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
    • ํ•œ ๊ฐ€์ง€ ์ž‘์—…๋งŒ ํ•˜๋Š” ํ•จ์ˆ˜๋Š” ์—ฌ๋Ÿฌ ์„น์…˜์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ํŒ๋‹จํ•˜๋Š” ๊ฒƒ๋„ ์ข‹๋‹ค.
  • ํ•จ์ˆ˜ ๋‹น ์ถ”์ƒํ™” ์ˆ˜์ค€์€ ํ•˜๋‚˜๋กœ!

    • ํ•œ ํ•จ์ˆ˜์—์„œ ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ๋†’์€(์˜ˆ.getfunc()) ์ฝ”๋“œ์™€ ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ๋‚ฎ์€(์˜ˆ. console.log(text)) ์ฝ”๋“œ๊ฐ€ ๊ฐ™์ด ์žˆ์œผ๋ฉด ์ข‹์ง€ ์•Š๋‹ค.
    • ์œ„์—์„œ ์•„๋ž˜๋กœ ์ฝ”๋“œ ์ฝ๊ธฐ : ๋‚ด๋ ค๊ฐ€๊ธฐ ๊ทœ์น™
      • ์ฝ”๋“œ๋Š” ์œ„์—์„œ ์•„๋ž˜๋กœ ์ด์•ผ๊ธฐ์ฒ˜๋Ÿผ ์ฝํ˜€์•ผ ์ข‹๋‹ค.
      • ์ด๋Ÿฌ๊ธฐ ์œ„ํ•ด์„  ํ•จ์ˆ˜ ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ์œ„์—์„œ๋ถ€ํ„ฐ ํ•œ๋‹จ๊ณ„์”ฉ ๋‚ฎ์•„์ ธ์•ผ ํ•œ๋‹ค.
  • Switch๋ฌธ

    • Switch๋ฌธ์€ ๋ณธ์งˆ์ ์œผ๋กœ N๊ฐ€์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์กŒ๊ธฐ ๋•Œ๋ฌธ์— switch๋ฌธ์„ ์™„์ „ํžˆ ํ”ผํ•  ๋ฐฉ๋ฒ•์€ ์—†๋‹ค.
    • ํ•˜์ง€๋งŒ ์ €์ฐจ์› ํด๋ž˜์Šค ๋ฌธ์— Switch ๊ตฌ๋ฌธ์„ ๊ตฌํ˜„ํ•˜๊ณ  ์ ˆ๋Œ€ ๋ฐ˜๋ณตํ•˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•์€ ์žˆ๋‹ค.
  • ์„œ์ˆ ์ ์ธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ผ!

    • ์ฝ”๋“œ์˜ ์ด๋ฆ„์„ ์ฝ๊ณ  ๊ธฐ๋Šฅ์„ ์ง์ž‘ํ–ˆ์„ ๋•Œ ์‹ค์ œ๋กœ ์ฝ”๋“œ๊ฐ€ ๊ทธ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๋ฉด ์ข‹์€ ์ด๋ฆ„์ด๋‹ค.
    • ๊ธธ๊ณ  ์„œ์ˆ ์ ์ธ ์ด๋ฆ„์ด ์งง๊ณ  ์–ด๋ ค์šด ์ด๋ฆ„๋ณด๋‹ค ์ข‹๊ณ , ๊ธธ๊ณ  ์„œ์ˆ ์ ์ธ ์ฃผ์„๋ณด๋‹ค ์ข‹๋‹ค.
    • ํ•จ์ˆ˜ ์ด๋ฆ„์„ ์ •ํ• ๋•Œ์—” ์—ฌ๋Ÿฌ ๋‹จ์–ด๊ฐ€ ์‰ฝ๊ฒŒ ์ฝํžˆ๋Š” ๋ช…๋ช…๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ณ  ๊ทธ ๋‹ค์Œ ์—ฌ๋Ÿฌ ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•ด ํ•จ์ˆ˜ ๊ธฐ๋Šฅ์„ ์ž˜ ํ‘œํ˜„ํ•˜๋Š” ์ด๋ฆ„์„ ์ง€์–ด์•ผ ํ•œ๋‹ค.
    • ์ด๋ฆ„์„ ๋ถ™์ผ ๋•Œ์—” ์ผ๊ด€์„ฑ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ํ•จ์ˆ˜ ์ธ์ˆ˜

    • ํ•จ์ˆ˜์—์„œ ์ด์ƒ์ ์ธ ์ธ์ˆ˜์˜ ๊ฐœ์ˆ˜๋Š” ์ ์„ ์ˆ˜๋ก ์ข‹๋‹ค. (0๊ฐœ > 1๊ฐœ > 2๊ฐœ... 4๊ฐœ๋ถ€ํ„ด ๊ธˆ์ง€!)
    • ์ธ์ˆ˜๋Š” ํ•จ์ˆ˜์˜ ์˜๋ฏธ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ ๋‹ค.
    • ๋‹จํ•ญ ํ˜•์‹
      • ์ธ์ˆ˜์— ์งˆ๋ฌธ์„ ๋˜์งˆ ๋•Œ(fileExists("File"))
      • ์ธ์ˆ˜๋ฅผ ๋ญ”๊ฐ€๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์‹ถ์„ ๋•Œ(fileOpen("File"))
      • ์ด๋ฒคํŠธ ํ•จ์ˆ˜
      • ์ด ์„ธ๊ฐ€์ง€๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๋‹จํ•ญ ํ•จ์ˆ˜๋Š” ๊ฐ€๊ธ‰์  ํ”ผํ•ด์•ผ ํ•œ๋‹ค.
    • ํ”Œ๋ž˜๊ทธ ์ธ์ˆ˜
      • ํ”Œ๋ž˜๊ทธ ์ธ์ˆ˜๋Š” ์ธ์ž์˜ ๊ฐ’์— ๋”ฐ๋ผ ํ•จ์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ์—ฐ์‚ฐ์„ ํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.
      • ์ด ๋ง์€ 'ํ•จ์ˆ˜๋Š” ํ•œ ๊ฐ€์ง€ ์—ญํ• ์„ ํ•ด์•ผํ•œ๋‹ค'๋Š” ๊ทœ์น™์— ์œ„๋ฐฐ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ”Œ๋ž˜๊ทธ ์ธ์ˆ˜๋Š” ๋˜๋„๋ก์ด๋ฉด ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋œ๋‹ค.
    • ์ดํ•ญ ํ•จ์ˆ˜
      • ๋งŒ์•ฝ x, y์ขŒํ‘œ๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ํ•จ์ˆ˜๋ผ๋ฉด 2๊ฐœ์˜ ์ธ์ˆ˜๋ฅผ ๋ฐ›๋Š”๊ฒƒ์ด ๋” ์ผ๋ฐ˜์ ์ผ ๊ฒƒ์ด๋‹ค.
        ์ด ๋‘ ์ขŒํ‘œ์—๋Š” ์ž์—ฐ์ ์ธ ์ˆœ์„œ๋„ ์žˆ์–ด ํ—ท๊ฐˆ์ผ ์ผ์ด ์—†๋‹ค.
      • ๊ทธ๋Ÿฐ๋ฐ assertEquals(expected, actual) ๊ฐ™์€ ํ•จ์ˆ˜๋Š” ์ธ์ˆ˜ ์‚ฌ์ด์— ์ž์—ฐ์ ์ธ ์ˆœ์„œ๊ฐ€ ์—†๋‹ค.
        ๋•Œ๋ฌธ์— expected, actual ์˜ ์ˆœ์„œ๋ฅผ ๊ธฐ์–ตํ•ด์•ผํ•˜๊ณ  ์ด๋Ÿฐ ๋ถ€๋ถ„์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ๋‹ค.
    • ์ธ์ˆ˜ ๊ฐ์ฒด
      • function makeCircle(x, y, radius) ==> function makeCircle(center, radius)
      • ์œ„ ์˜ˆ์‹œ์ฒ˜๋Ÿผ x, y๋ฅผ ๊ฐ์ฒด๋กœ ๋งŒ๋“ค์–ด ์ธ์ˆ˜๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค.

๐Ÿ™„์˜ค๋Š˜ ์ฝ์€ ์†Œ๊ฐ์€? ๋– ์˜ค๋ฅด๋Š” ์ƒ๊ฐ์„ ๊ฐ€๋ณ๊ฒŒ ์ ์–ด๋ณด์„ธ์š”

  • ์ธ์ˆ˜๋Š” ์–ด๋ ต๋‹ค. ํ•จ์ˆ˜๋ฅผ ์ดํ•ดํ•˜๋ ค ์ธ์ˆ˜๋ฅผ ๋ณด๋ฉด ์ธ์ˆ˜๋ฅผ ๊ฑด๋„ค์ค€ ํ•จ์ˆ˜๋ฅผ ๋˜ ์ดํ•ดํ•˜๊ณ  ๊ธฐ์–ตํ•ด์•ผํ•œ๋‹ค. ๋‚˜๋Š” ์ด๊ฒŒ ์–ด์ฉ” ์ˆ˜ ์—†๋Š” ์ผ์ด๋ผ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์ฑ…์—์„  ์ด๋Ÿฌํ•œ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ํ•œ๋‹ค. ์•„์ง ์–ด๋–ค์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ์ด๋ฅผ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ์„์ง€ ๊ฐ์ด ์˜ค์ง€ ์•Š์ง€๋งŒ ๊ณ„์† ๊ณต๋ถ€ํ•˜๋‹ค๋ณด๋ฉด ์–ธ์  ๊ฐ„ ์ดํ•ดํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•œ๋‹ค.

  • ์ฑ…์ด ์ ์  ์–ด๋ ค์›Œ์ง„๋‹ค.. ๊ธ€์“ด์ด๊ฐ€ ์ฃผ์žฅํ•˜๋Š” ๋‚ด์šฉ ์ž์ฒด๋Š” ์‰ฝ๊ฒŒ ๋‚ฉ๋“ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์˜ˆ์‹œ๋กœ ๋“œ๋Š” ์ฝ”๋“œ๋“ค์„ ๋ณด๋ฉด ์ž˜ ์ฝํžˆ์ง€ ์•Š๋Š”๋‹ค. ๋˜ํ•œ ์˜์–ด์‹ค๋ ฅ์ด ๋ถ€์กฑํ•ด์„œ ๊ธ€์“ด์ด๊ฐ€ ์ด๋ฆ„์˜ ์˜๋ฏธ๋ฅผ ์‰ฝ๊ฒŒ ํ‘œํ˜„ํ•œ ๊ฒƒ๋„ ํ•˜๋‚˜ํ•˜๋‚˜ ์‚ฌ์ „์—์„œ ์ฐพ์•„ ์˜๋ฏธ๋ฅผ ์ดํ•ดํ•ด์•ผํ•œ๋‹ค. ์•„์ง ๊ฐˆ๊ธธ์ด ๋ฉ€์ง€๋งŒ ํ™•์‹คํžˆ ๋ฐฐ์šฐ๋Š”์ ์€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

๐Ÿ”Ž ๊ถ๊ธˆํ•œ ๋‚ด์šฉ์ด ์žˆ๊ฑฐ๋‚˜, ์ž˜ ์ดํ•ด๋˜์ง€ ์•Š๋Š” ๋‚ด์šฉ์ด ์žˆ๋‹ค๋ฉด ์ ์–ด๋ณด์„ธ์š”.

  • ๊ธ€์“ด์ด๋Š” p.24์—์„  '์„œ๋กœ ํก์‚ฌํ•œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ' ๋งํ–ˆ์ง€๋งŒ p.50์—์„  '์ด๋ฆ„์„ ๋ถ™์ผ ๋•Œ๋Š” ์ผ๊ด€์„ฑ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค'๋ผ๊ณ  ํ•œ๋‹ค. ์˜ˆ์‹œ๋กœ ์ ์–ด๋†“์€ ํ•จ์ˆ˜๋ช…๋“ค๋„ ์ •๋ง ์„œ๋กœ ํก์‚ฌํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.. ์ž˜ ์ดํ•ด๊ฐ€ ๊ฐ€์ง€ ์•Š๋Š”๋‹ค.

  • ํ”Œ๋ž˜๊ทธ ์ธ์ˆ˜๋ž€? ==> A flag argument is a kind of function argument that tells the function to carry out a different operation depending on its value.
    ์ฆ‰, ์ธ์ž์˜ ๊ฐ’์— ๋”ฐ๋ผ์„œ ํ•จ์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ์—ฐ์‚ฐ(๊ธฐ๋Šฅ)์„ ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ํ”Œ๋ž˜๊ทธ ์ธ์ˆ˜์ž…๋‹ˆ๋‹ค.
    (https://martinfowler.com/bliki/FlagArgument.html)

โœ ์†Œ๊ฐ 3์ค„ ์š”์•ฝ

  • ๊ณ„์† ๊ฐ•์กฐํ•˜์ง€๋งŒ ํ•จ์ˆ˜๋Š” ํ•œ๊ฐ€์ง€ ๊ธฐ๋Šฅ๋งŒ, ๋˜ํ•œ ์ค„์ผ ์ˆ˜ ์žˆ์œผ๋ฉด ์ตœ๋Œ€ํ•œ ์ค„์—ฌ์•ผ ํ•œ๋‹ค.
  • https://velog.io/@eddy_song/alan-kay-OOP ์˜ค๋Š˜ ์ฝ์—ˆ๋˜ ๊ฐ์ฒด ์ง€ํ–ฅ์„ ์„ค๋ช…ํ•˜๋Š” ๋งค์šฐ ์ข‹์€ ํฌ์Šคํ„ฐ์˜€๋‹ค. ์ด ๋ธ”๋กœ๊ทธ์˜ ๋‚ด์šฉ๊ณผ ์˜ค๋Š˜ ์ฑ…์—์„œ ์ฝ์€ ๋‚ด์šฉ์„ ๊ฐ™์ด๋ณด๋‹ˆ ๋ญ”๊ฐ€ ๋” ๊นŠ์€ ์ดํ•ด๋ฅผ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
  • ์ง€๊ธˆ๊นŒ์ง€ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ• ๋•Œ์—” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์ง€ ์•Š๋Š” ํ•จ์ˆ˜๋Š” ๊ฑฐ์˜ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•˜์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ธ์ˆ˜๊ฐ€ 0๊ฐœ์ธ ํ•จ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ข‹๋‹ค๋‹ˆ.. ์ถฉ๊ฒฉ์ด๋‹ค.
profile
๊ธฐ๋ณธ์„ ํƒ„ํƒ„ํ•˜๊ฒŒ๐ŸŒณ

0๊ฐœ์˜ ๋Œ“๊ธ€