๊ธ์ ๋ชฉํ
3์ฃผ์ฐจ ๊ณตํต ํผ๋๋ฐฑ์ ํตํด 3์ฃผ์ฐจ์ ์ฝ๋๋ฅผ ๋๋์๋ณด๊ณ 4์ฃผ์ฐจ๋ฅผ ์์ํด๋ณผ ์๊ฐ์ด๋ค.
โป ํด๋น ๊ธ์ ์ฐ์ํํ ํฌ์ฝ์ค์์ ์ฌ๋ ค์ค 3์ฐจ ๊ณตํต ํผ๋๋ฐฑ์ ์ฐธ๊ณ ํ์ฌ ์์ฑ๋์์ต๋๋ค. ๊ณตํต ํผ๋๋ฐฑ์ ํ๋ฆฌ์ฝ์ค ์ฐธ์ฌ์๋ค์๊ฒ ๊ฐ๋ณ์ ์ผ๋ก ๊ณต์ ๋ ๋งํฌ๊ฐ ์กด์ฌํ๋ฉฐ, ์ ๋ ํด๋น ๋งํฌ๋ ๊ณต์ ํ ์ ์๊ณ ๊ณตํต ํผ๋๋ฐฑ์ ํ์ธํ๋ ๊ณผ์ ์์์ ์๊ฐ๋ค์ ํด๋น ๊ธ์ ์ ๋ฆฌํด๋ณด์์ต๋๋ค.
3์ฃผ์ฐจ ํ๋ฆฌ์ฝ์ค ๊ณผ์ ์ ๋ํ ํ๊ธฐ
3์ฃผ์ฐจ ํ์ต ๋ชฉํ๋ ๊ด๋ จ ํจ์๋ค์ ๋ฌถ์ด ํด๋์ค๋ฅผ ๋ง๋ค๊ณ , ์ด ๊ฐ์ฒด๋ค์ด ํ๋ ฅํ์ฌ ํ๋์ ํฐ ๊ธฐ๋ฅ์ ์ํํ๋๋ก ํ๋ ๊ฒ์ด์๋ค. ๋๋ถ์ด ํด๋์ค์ ํจ์์ ๋ํ ๋จ์ ํ
์คํธ๋ฅผ ํตํด ์๋ํ ๋๋ก ์ ํํ๊ฒ ์๋ํ๋์ง๋ฅผ ๊ฒ์ฆํ๋ ๊ฒ์ด ์ค์ํ๋ค. ๋จ์ ํ
์คํธ์์ ‘๋จ์’์ ์๋ฏธ๋ฅผ ๋ช
ํํ ์ ์ํ๋ ๊ฒ์ด ์กฐ๊ธ ์ด๋ ค์ ์ง๋ง, ์ผ๋จ ์ฝ๋ ์์ฑ ์ค ์์ํ๊ฒ ํ
์คํธ๊ฐ ํ์ํ๋ค๊ณ ๋๊ปด์ง๋ ํจ์๋ค์ ํ๋์ฉ ํ
์คํธํ๋ฉด์ ์งํํ๋ค. ๊ทธ๋๋ 2์ฃผ์ฐจ ๋๋ ์ต์ํ์ง ์์์ ์ ๋๋ก ์์ฑํ์ง ๋ชปํ๋ ํ
์คํธ ์ฝ๋๋ค์ด ์ด๋ฒ์๋ ์กฐ๊ธ ๋ ์์ฐ์ค๋ฝ๊ฒ ๋ค๊ฐ์ ๋ฟ๋ฏํ๋ค. 1์ฃผ์ฐจ์๋ npm run start๋ฅผ ๋ฌดํ ๋ฐ๋ณตํ๋ฉฐ ํ
์คํธํ์๋๋ฐ, ์ด์ ๋ ์ง์ ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ๊ณ npm run test๋ก ์ค๋ฅ๊ฐ ๋๋ ๋ถ๋ถ๋ง ์ฐพ์ ์์ ํ๊ฒ ๋์๋ค๋ ์ ์์ ์ค์ค๋ก ๊ฝค ๋ฐ์ ํ๋ค๊ณ ๋๋๋ค... ๐ญ
ํฉ๊ฒฉ ์ฌ๋ถ๋ฅผ ๋ ๋์, 3์ฃผ์ฐจ๊น์ง ์จ ๊ฒ๋ง์ผ๋ก๋ ์๋์ค๋ฝ๋ค. ์ฒ์ ์์ํ ๋๋ ํ์ด์ฌ์ผ๋ก ๋ฐ๋ณต๋ฌธ์ ํ์ฉํ ํจ์ ํ๋ ์ ๋ ๋ง๋ค์ค ์์๋ ๋ด๊ฐ ๊ณผ์ฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๊ธฐ๋ฅ ํ๋๋ฅผ ๊ตฌํํด๋ผ ์ ์์์ง ์๋ฌธ์ด์๊ณ , ์ด์ ๊ธฐ์๋ค์ด ์์ฑํ ์ฝ๋๋ค์ ์ดํด์กฐ์ฐจ ๋์ง ์์๋ค. ํ์ง๋ง ์ด์ ๋ ๋ด๊ฐ ์์ฑํ ์ฝ๋๋ค์ ๋ชจ๋ ์ดํดํ๊ณ , ์ค๋ฅ๊ฐ ๋๋ฉด ๋ฐ๋ก ์์ ํ ๋ถ๋ถ์ ํ์
ํ ์ ์์ ์ ๋๋ก ์ฑ์ฅํ๋ค๋ ์ฌ์ค์ด ์์ผ ์ค๊ฐ์ด ๋๋ค.
์ฒ์์๋ ๊ธฐ๋ฅ์ ํ๋์ฉ ๊ตฌํํ๋ฉด์ ํ์ผ์ ์ด๋ป๊ฒ ๋ถ๋ฆฌํ๋ ๊ฒ ์ข์์ง, ๋ถ๋ฆฌํ ํ์ผ๋ค์ ์ด๋ ํด๋์ ๋ฃ์ด์ผ ๋๋ ํฐ๋ฆฌ๋ฅผ ๊น๋ํ๊ฒ ์ ๋ฆฌํ ์ ์์์ง ๊ณ ๋ฏผํ๋๋ฐ, ๊ทธ๋ ๊ฒ ์ฒด๊ณ๋ฅผ ์ก์๊ฐ๋ ๊ณผ์ ์ด ์๊ฐ๋ณด๋ค ์ฌ๋ฏธ์์๋ค. ์๋ ํฐ ์นดํ
๊ณ ๋ฆฌ๋ก ๋ฌถ์ด ์ ๋ฆฌํ๋ ๊ฑธ ์ข์ํ๋ ์ฑํฅ์ด๋ผ, ์ฝ๋ฉ์ ํ๋ฉด์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ตฌ์ฑํด๊ฐ๋ ๊ฒ๋ ๊ฝค ํฅ๋ฏธ๋ก์ ๋ค.
์ด์ ๋ ํ
์คํธ ์ฝ๋๋ ์ด๋ ์ ๋ ์ต์ํด์ก๊ณ , ํจ์์ ๋ฉ์๋๋ฅผ ๊ฐ์ฅ ์์ ๋จ์๋ก ๋๋ ์ ํ๋์ ํด๋์ค๋ก ๋ฌถ๊ณ , ํด๋น ํด๋์ค๋ฅผ ๊ฐ์ฒด๋ก ์ธ์คํด์คํํ์ฌ ์ด ๊ฐ์ฒด๋ค์ด ํ๋ ฅํด ํ๋์ ํฐ ๊ธฐ๋ฅ์ ์ํํ๋ controller๊น์ง ๋ง๋ค ์ ์๊ฒ ๋์๋ค. ์ด๋ฌํ ๊ณผ์ ์ 1, 2, 3์ฃผ ์ค ์ด๋ ํ ์ฃผ๋ผ๋ ์ ๋๋ก ์งํํ์ง ์์๋ค๋ฉด ์ป๊ธฐ ์ด๋ ค์ด ๊ฒฐ๊ณผ์๋ค๊ณ ์๊ฐํ๋ค. ๋ฌผ๋ก ๋๊ตฐ๊ฐ์๊ฒ๋ ์ฌ์ด ์์
์ผ ์ ์๊ณ , ์ด๋ฏธ 1์ฃผ์ฐจ๋ถํฐ ๊ทธ ๋ฐฉ๋ฒ์ ์๊ณ ์งํํ๋ ์ฌ๋๋ค๋ ์์๊ฒ ์ง๋ง, 1์ฃผ์ฐจ์ App.js์ ์ ์ฐจ ์งํฅ์ ์ผ๋ก๋ง ์ฝ๋๋ฅผ ์์ฑํ๋ ๋์๊ฒ๋ ์ง๊ธ์ ์ฑ์ฅ์ด ๊ต์ฅํ ํฌ๊ฒ ๋ค๊ฐ์จ๋ค.
๊ณตํต ํผ๋๋ฐฑ ํ์ธ
[ ํจ์(๋ฉ์๋) ๋ผ์ธ์ ๋ํ ๊ธฐ์ค๋ ์ ์ฉํ๋ค ]
3์ฃผ์ฐจ์ ๊ฐ ํจ์(๋ฉ์๋)์ ๊ธธ์ด๋ฅผ 15๋ผ์ธ์ผ๋ก ์ ํํ๋ ๊ท์น์ด ์์๋ค. ์ด ๊ท์น์ main()ํจ์์๋ ๋์ผํ๊ฒ ์ ์ฉํ๋ฉฐ ๊ณต๋ฐฑ ๋ผ์ธ๋ ํ ๋ผ์ธ์ผ๋ก ๊ฐ์ฃผํ๋ค๊ณ ํผ๋๋ฐฑ๋์ด์๋ค ๋ง์ฝ ํจ์๊ฐ 15๋ผ์ธ์ ์ด๊ณผํ๋ค๋ฉด, ์ญํ ์ ๋ ๋ถ๋ช ํ๊ฒ ๋๋ ์ ์๋์ง ๊ณ ๋ฏผํ๊ณ ๋ถ๋ฆฌํด๋ณด์์ผ ๊ฒ ๋ค.
ํด๋น ๊ธฐ์ค์ ์ ์ฉํ๋ฉด ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ผ ์ ์๊ธฐ ๋๋ฌธ์ ํจ์ ๋ถ๋ฆฌ ๋๋ ํด๋์ค ๋ถ๋ฆฌ๋ ๊ณ ๋ คํด์ผ ํ๋ ์ฌํญ์ด๋ค.
[ ์์ธ ์ํฉ์ ๋ํ ๊ณ ๋ฏผํ๋ค ]
์์ธ ์ํฉ์ ๋ชจ๋ ๊ณ ๋ คํ์ฌ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ ๊ฒ์ด ์ ์์ ์ธ ์ํฉ์ ๊ตฌํํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ์ด๋ ต๋ค๊ณ ํ๋ค. ๊ทธ๋ฐ ๊ฒ ๊ฐ๋ค.. ๋๋ 3์ฃผ์ฐจ์ ์์ฃผ ์น๋ช ์ ์ธ ์์ธ ์ํญ์ ๋์ณค๋ค. ๋ก๋ ๊ตฌ๋งค ๊ธ์ก ์ ๋ ฅ ์ ์์ ๊ฐ์ ๊ณ ๋ คํ์ง ์์ ๊ฒ์ด๋ค ใ
๊ธฐ๋ฅ ๊ตฌํ์ด ์๋์ ์ผ๋ก ์ฝ๊ณ ๊ฐ๋ฒผ์ ๋ 1์ฃผ์ฐจ์๋ ์์ธ ์ํฉ์ ๋ํด ๊ณ ๋ฏผํ๋ ๊ฒ์ด ์ฌ์ ๋ค. ํ์ง๋ง 2, 3์ฃผ์ฐจ๊ฐ ๋๋ฉด์ ๊ตฌํ์ด ์ด๋ ค์ธ ๊ฒ ๊ฐ์์ ์์ธ ์ํฉ์ ๋ง์ด ํ์ ํ์ง ๋ชปํ ์ฑ๋ก ๊ตฌํ๋ง ์์ํ์ผ๋ ๋๋ ๋๋ ์ ๋๋ก ํ์ธํด๋ด์ง ๋ชปํ ๊ฒ์ด ์์ฌ์ ๋ค.
์์ธ ์ํฉ์ ๊ตฌํํ๋ฉด์ ์ค๊ฐ์ค๊ฐ ์ถ๊ฐํ๋ฉด ๋ ๊ฒ ์ด๋ผ๊ณ ์๊ฐํ๋๋ฐ ๊ตฌํ์ ๊ธ๊ธํ์ฌ ์ ๋๋ก ์์ธ ์ํฉ์ ์ถ๊ฐํ์ง ๋ชปํ ๊ฒ ๊ฐ๋ค. ๊ทธ๋์ ์ด๋ฒ์๋ ๊ณตํต ํผ๋๋ฐฑ์ ๋ฐ๋ผ ์์ธ๋ฅผ ๋ฏธ๋ฆฌ ๊ณ ๋ คํ์ฌ ํ๋ก๊ทธ๋จ์ด ์๋ชป๋ ๊ฒฐ๊ณผ๋ฅผ ๋ด์ง ์๋๋ก ์ค๋นํด์ผ ๊ฒ ๋ค.
(ํน์ ์จ๊ฒจ์ง ํ ์คํธ ์ฝ๋๊ฐ ์์ ์ ๋ ฅ๊ฐ์ ๊ฑธ๋ฌ๋ด์ง ๋ชปํ์ฌ ๋ด ๊ธฐ๋ฅ์ ์๋์์ ๋ง์ด๋์ค๋ฅผ ๋ฐ๋ ๊ฑด ์๋๊น..^^)
<์ ๋ฒ ์ฃผ์ฐจ ์์ธ ์ฌํญ>
- ๋ก๋ ๊ตฌ์ ๊ธ์ก์ 1000 ์ดํ์ ์ซ์๋ฅผ ์ ๋ ฅ
- ๋น์ฒจ ๋ฒํธ์ ์ค๋ณต๋ ์ซ์๋ฅผ ์ ๋ ฅ
- ๋น์ฒจ ๋ฒํธ์ 1~45 ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ์ซ์๋ฅผ ์ ๋ ฅ
- ๋น์ฒจ ๋ฒํธ์ ์ค๋ณต๋ ๋ณด๋์ค ๋ฒํธ๋ฅผ ์ ๋ ฅ
[ ๋น์ฆ๋์ค ๋ก์ง๊ณผ UI ๋ก์ง์ ๋ถ๋ฆฌํ๋ค ]
๊ต์ฅํ.. ์ค์ํ๊ณ ์์๋ค. ๋๊ฐ ์๋ ค์ฃผ์ง ์์ผ๋ฉด ๋ชจ๋ฅด๋ ๊ฒ์ธ๊ฐ..ใ ๋น์ฆ๋์ค ๋ก์ง์ class์ UI ๋ก์ง์ ์ด์ฌํ ๋ฃ์ด์ ๋จ์ผ ์ฑ ์ ์์น์ ์๋ฐฐ๋ ์ฝ๋๋ฅผ 3์ฃผ๊ฐ ์์ฑํ๊ณ ์์๋ค. UI ๋ก์ง์ ํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ํ์ํ๊ฑฐ๋ ์ ๋ ฅ์ ๋ฐ๋ ์ญํ ์ ๋ด๋๋ค. ๊ทธ๋์ View ํด๋์ค์ ๋ณ๋๋ก ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ข๋ค๊ณ ํ๋ค. MVC ํจํด์ ๋ํด ๊ณต๋ถํด๋๊ณ ์ฐจ๋ก๋๋ก ํ์ผ์ ํ์์ฑ์ ํ์ ํ๋ฉด์ ๋ง๋ค์ด๋๊ฐ๋ ค๊ณ ํ๋๋ฐ View์ ๋ํด์๋ ์๊ฐ ๋ชปํ์๋ค๋.. ์์ฌ์์ด ๋จ๋๋ค.
๊ทธ๋๋ ํผ๋๋ฐฑ ๋๋ถ์ ์๊ฒ๋ ์ฌํญ์ด๊ธฐ ๋๋ฌธ์ ์คํ๋ ค ๋ ๊ธฐ์ต์ ์ค๋ ๋จ์ ๊ฒ ๊ฐ๋ค. UI ๋ก์ง๊ณผ ๋น์ฆ๋์ค ๋ก์ง์ ํผ์ฌํ๋ ๊ฒ์ ๋จ์ผ ์ฑ ์ ์์น(SRP)์ ์๋ฐฐ๋๋ค.!
โผ ๋จ์ผ ์ฑ ์ ์์น ๋๋ณด๊ธฐ (๋ค์ด๋ฒ ์ง์๋ฐฑ๊ณผ ์คํฌ๋ฉ)
[ ๊ฐ์ฒด์ ์ํ ์ ๊ทผ์ ์ ํํ๋ค ]
ํ๋๋ private class ํ๋๋ก ๊ตฌํํด์ผ ํ๋ค. ์ด์ ๋ฅผ ๋ช ํํ ์ฐพ์ง ๋ชปํด์ ๊ธฐ์กด์ ํ๋๋๋ก Lotto ํ๋๋ฅผ ์ ์ธํ ๋ชจ๋ ํ๋๋ฅผ public์ผ๋ก ๊ตฌํํ๋ค. ์ด์ฏค๋ถํฐ.. ์ฌ์ฌ ๊ณตํต ํผ๋๋ฐฑ์ ์ฝ์ผ๋ฉด์ ๋ชจ๋ ํผ๋๋ฐฑ์ ๋ด์ฉ์ด ๋ด ์ฝ๋์ ํฌํจ๋์ด์๋ ๊ฒ๊ณผ ๊ฐ์ ๊ธฐ๋ถ์ด ๋ค๋ฉด์ ์ฌํ๋ค..^^ ๋ ์ ๋ง ๋์๋ง ํ๋ ํธ๋ ์ฌ๋ฅผ ๋ง๋ ๊ฒ์ธ๊ฐ
ํ๋ผ์ด๋น ํ๋๊ฐ ํ์ํ ์ด์ ์ ๋ํด ์ค์ค๋ก ์ฐพ์๋ณด๋ผ๋ ํผ๋๋ฐฑ์ด ์กด์ฌํ์ฌ ์ฐพ์๋ณด๊ณ ๋ธ๋ก๊น ํด๋ณด์๋ค..
https://sundery.tistory.com/222
[ ๊ฐ์ฒด๋ ๊ฐ์ฒด๋ต๊ฒ ์ฌ์ฉํ๋ค ]
๋์ ๊ฐ์ฒด๋ค์ ๊ฐ์ฒด๋ค์ ๋๊ฐ (No)
3์ฃผ์ฐจ ํ์ผ์ Lotto.js์ Lotto ๊ฐ์ฒด๋ numbers ํ๋ผ์ด๋น ํ๋๊ฐ ์์๋ค. ๊ทผ๋ฐ ์ด numbers ํ๋๋ฅผ ์ด๋ป๊ฒ ์ ์จ์ผ ํ ์ง ๋ชจ๋ฅด๊ฒ ์ด์ ์ ํจ์ฑ ๊ฒ์ฌ ํด๋์ค๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด์ ๊ฐ์ฒด๋ก ๋ง๋ค๊ณ , ๊ทธ๊ฑธ๋ก Lotto ํ์ผ ์์ numbers ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํ๋ค. ์ฌ์ค Lotto ๊ฐ์ฒด ํ์ผ ์์์ numbers ๊ฐ์ ๊ด๋ฆฌํ๊ฒ ๋ง๋ค๊ณ , LottoGame ๊ฐ์ฒด์์ Lotto๋ฅผ ๊ฐ์ ธ์์ ์ฐ๋ ๋ฐฉ์์ผ๋ก ํด์ผ ํ๋๋ฐ, ๋๋ Lotto ๊ฐ์ฒด๋ฅผ ๊ทธ๋ฐ ์กด์ฌ๋ก ๋ง๋ค์ง ๋ชปํ๋ค.. ์คํ๋ ค ์๋ฑํ ํ์ผ์ ๊ทธ๋ฐ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์๋ค๋ ๊ฒ ;;
์ง๊ธ ์๊ฐํด๋ณด๋ Bonus์ Lotto ๋ฒํธ๋ฅผ ๋๋๋ ค๋ค๊ฐ ๊ตณ์ด ๋๋์ง ์์๋๋ฐ ์คํ๋ ค ๋๋๋ ๊ฒ์ด ์ ๋ต์ด์๋ ๊ฒ ๊ฐ๋ค.
โผ ์๋ชป๋ ์ฌ์ฉ ์์
class Lotto {
#numbers
constructor(numbers) {
this.#numbers = numbers
}
getNumbers() {
return this.#numbers
}
}
class LottoGame {
play() {
const lotto = new Lotto(...)
// ์ซ์๊ฐ ํฌํจ๋์ด ์๋์ง ํ์ธํ๋ค.
lotto.getNumbers().contains(number)
// ๋น์ฒจ ๋ฒํธ์ ๋ช ๊ฐ๊ฐ ์ผ์นํ๋์ง ํ์ธํ๋ค.
lotto.getNumbers().stream()...
}
}
โผ ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ ์์
class Lotto {
#numbers
constructor(numbers) {
this.#numbers = numbers
}
contains(number) {
// ์ซ์๊ฐ ํฌํจ๋์ด ์๋์ง ํ์ธํ๋ค.
return ...
}
matchCount(other) {
// ๋น์ฒจ ๋ฒํธ์ ๋ช ๊ฐ๊ฐ ์ผ์นํ๋์ง ํ์ธํ๋ค.
return ...
}
}
class LottoGame {
play() {
const lotto = new Lotto(...)
lotto.contains(number)
lotto.matchCount(...)
}
}
์ฐธ๊ณ ๊ธ : https://tecoble.techcourse.co.kr/post/2020-04-28-ask-instead-of-getter/
getter๋ฅผ ์ฌ์ฉํ๋ ๋์ ๊ฐ์ฒด์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด์
getter๋ ๋ฉค๋ฒ๋ณ์์ ๊ฐ์ ํธ์ถํ๋ ๋ฉ์๋์ด๊ณ , setter๋ ๋ฉค๋ฒ๋ณ์์ ๊ฐ์ ๋ณ๊ฒฝ์ํค๋ ๋ฉ์๋์ด๋ค. ์๋ฐ ๋น ์ค๊ณ ๊ท์ฝ์ ๋ฐ๋ฅด๋ฉด ์๋ฐ ๋น ํด๋์ค ์ค๊ณ ์, ํด๋์ค์ ๋ฉค๋ฒ๋ณ์์ ์ ๊ทผ์ ์ด์๋ private
tecoble.techcourse.co.kr
๐ก : ๋ getter๋ฅผ ๋จ์ฉํ์๊ตฌ๋
[ ํ๋(์ธ์คํด์ค ๋ณ์)์ ์๋ฅผ ์ค์ด๊ธฐ ์ํด ๋ ธ๋ ฅํ๋ค ]
ํ๋์ ์๊ฐ ๋ง์์ง๋ฉด ๊ฐ์ฒด์ ๋ณต์ก๋๊ฐ ์ฆ๊ฐํ๊ณ , ๊ด๋ฆฌ๊ฐ ์ด๋ ค์์ง๋ฉฐ, ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ๋ ๋์์ง๋ค. ๋ฐ๋ผ์ ํ๋์ ์ค๋ณต์ด ์๊ฑฐ๋ ๋ถํ์ํ ํ๋๊ฐ ์๋์ง ํ์ธํ๊ณ ์ต์ํํด์ผ ํ๋ค.
์ด ํผ๋๋ฐฑ์.. ๋์ ๊ฐ์ ์ฌ๋๋ค์ด ๋ง์๋์ง ๊ถ๊ธํด์ง๋ ํผ๋๋ฐฑ์ด์๋ค. ์๋ํ๋ฉด
;;;; ํน์ ๋ด๊ฑฐ ๋ณด๊ณ ์ถฉ๊ฒฉ ๋จน์ผ์ ์ ๊ณตํต ํผ๋๋ฐฑ์ ์์ฑํ์ ๊ฒ ์๋๊น ํ๋ ์ ๋๋ก ๋ง์ ์์ ํ๋
์ด์ฏค๋๋ ๋ด ๋ง์๋๋ก ์ฝ๋๋ฅผ ์ง๋.. ์ ๋ง ์ฆ๊ธฐ๊ธฐ๋ง ํ๋ ํ๋ฆฌ์ฝ์ค ์ ์ ๊ฐ ์๋๊น..
๊ทธ๋๋ ์ง๊ธ์ด๋ผ๋ ์์์ผ๋ ํผ๋๋ฐฑ์ ์์ฑ๋ ๋ฐฉ์์ฒ๋ผ ๋๋ ํ๋๋ฅผ ํ๋ฒ .. ์ค์ฌ๋ณด๋ ๋ฐฉ์์ ๊ณ ์ํด์ผ๊ฒ ๋ค.
์์๋ก๋ ์๋์ฒ๋ผ
class LottoResult {
#result = new Map()
#profitRate
#totalPrize
}
ํ๋๊ฐ ๋ง์ผ๋ฉด ์ค๋ณต์ด ์๊ฑฐ๋ ๋ถํ์ํ ํ๋๊ฐ ์๋ ์ง ํ์ธํ๊ณ ์ต์ํํด์ผ ํ๋ค๊ณ ํ๋ค.
์์ ๊ฐ์ ๊ฒฝ์ฐ๋ profitRate์ totalPrize๋ ๋น์ฒจ ๋ด์ญ(result)๋ง ์์ด๋ ๋ชจ๋ ๊ตฌํ ์ ์๋ ๊ฐ์ด๋ฏ๋ก ํ๋์ ํ๋๋ก ์ค์ผ ์ ์๋ค๊ณ ํ๋ค.
class LottoResult {
#result = new Map()
calculateProfitRate() { ... }
calculateTotalPrize() { ... }
}
๊ทธ๋์ ๋๋ ํ๋ฒ ๋ด ๊ฒ์ ์ค์ฌ๋ณธ๋ค๋ฉด..
class LottoController {
constructor() {
this.ticket = new Ticket();
this.jackpot = new Jackpot();
this.lottos = [];
this.winnings = [];
this.bonus = null;
this.cost = 0;
this.prize = 0;
this.ranks = { 5: 0, 4: 0, 3: 0, 2: 0, 1: 0 };
}
์ฌ๊ธฐ์ lottos๋ ์ฌ์ฉ์๊ฐ ์ป์ ๋๋ค ๋ก๋ ์ซ์๋ฅผ ๋ด๋ ๋ฐฐ์ด์ด๊ณ winnings๋ ๋น์ฒจ ์ซ์์ด๋ค. ๋ํ cost๋ ๋น์ฉ์ ๊ดํ ๊ฒ์ธ๋ฐ cost์ lottos๊ฐ ์ฐ๊ด์ด ๋์ด์๊ธฐ ๋๋ฌธ์ ticket ํ๋์ ์ค๋ณต๋๋ฉฐ jackpot ๋ํ winnings์ bonus ๋ฒํธ์ ๋ํ ๊ฐ์ ๋ด๊ณ ์๊ธฐ ๋๋ฌธ์ ์ค๋ณต๋๋ค. ๊ทธ๋ฆฌ๊ณ ranks ๊ฐ์ ํตํด prize๊ฐ์ด ๋์ค๊ธฐ ๋๋ฌธ์ ์ด ๋๊ฐ๋ ์ค๋ณต๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก prize์ ranks๋ ์ต์ข ๊ฒฐ๊ณผ๊ฐ์ด๊ธฐ ๋๋ฌธ์ result ํ๋๋ก ์ค๋ณต๋๋ค.
์๋์ ๊ฐ์ด ์ค์ผ ์ ์๋ค.
class LottoController {
constructor() {
this.#ticket = new Ticket();
this.#jackpot = new Jackpot();
this.#lottos = [];
this.#winnings = [];
this.#bonus = null;
this.#result = {};
}
}
์๋ฌด๋๋ ์ฌ๊ธฐ์ ๋ ์ค์ด๋ ค๋ฉด ํด๋์ค์ ์บก์ํ๋ฅผ ์ ํด์ ๊ฐ์ฒด๋ง ๊ฐ์ ธ์์ด์ผํ๋๋ฐ ๊ทธ๋ ๊ฒ ์ฝ๋๋ฅผ ๊ตฌํํ์ง ๋ชปํ๋ ์์ ๊ฐ์ด ์ค์ด๊ฒ ๋๊ณ ์ด๋ ๊ฒ ๋๋ฉด ์ค์ฌ๋ ํ๋์ ๊ฐ์๋ ๋ง๋ค..
๊ฐ์ฒด ์งํฅ์ ์ธ ์ค๊ณ๊ฐ ํ์ํ๋ค๋ ๊ฒ ๋ ํฌ๊ฒ ์๋ฟ๋๋ค.
[ ์ฑ๊ณตํ๋ ์ผ์ด์ค ๋ฟ๋ง ์๋๋ผ ์์ธ ์ผ์ด์ค๋ ํ ์คํธํ๋ค ]
๋คํํ๋ ์์ธ ์ผ์ด์ค์ ๋ํด์ ํ ์คํธ๋ฅผ ์งํํ๋ค (์ํธ)
ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋ง์ด ์์ฑํ ๊ฑด ์๋์ง๋ง ์ฑ๊ณต๊ณผ ์์ธ ํ ์คํธ ๋ชจ๋ ์์ฑํ๋ ค๊ณ ํ์ผ๋ฉฐ ์์ธ ํ ์คํธ์ ERROR ๋ฌธ๊ตฌ๋ ๊ณ์ ์๋ชป ์์ฑํ์ฌ ์์ ์ ๊ฑฐ์น๋.. ์ํฉ๋ ๋ง์๋ค.
์์ธ ์ผ์ด์ค ํ ์คํธ๋ ๋ ์์ธํ ์์ฑํ๊ณ ์ฑ๊ณตํ ์ผ์ด์ค๋ ์ ์์ฑํ๋๋ก ๋ ธ๋ ฅํด์ผ๊ฒ ๋ค.
[ ํ ์คํธ ์ฝ๋๋ ์ฝ๋๋ค ]
ํ ์คํธ ์ฝ๋๋ ๋ฆฌํฉํ ๋ง์ด ํ์ํ๋ค. ๋ฐ๋ณต์ ์ผ๋ก ์ํํ๋ ๋ถ๋ถ์ ์ค๋ณต์ ์ ๊ฑฐํ์ฌ ์ ์ง๋ณด์์ฑ์ ๋์ด๊ณ ๊ฐ๋ ์ฑ์ ํฅ์์์ผ์ผํ๋ค. ์ง๊ธ๋ณด๋ ๋์ ํ ์คํธ ์ฝ๋๋ ๊ทธ๋ฅ ๋จ์ํ ํ๋ผ๋ฏธํฐ ๊ฐ๋ง ๋ฐ๋๊ฒ ๋ง๋ค์๋ ๊ฒ ๊ฐ๋ค. ์ป์ด๊ฐ๋ ๊ฒ ๋๋ฌด ๋ง์ ๊ณตํต ํผ๋๋ฐฑ์ด๋ค..
> ์ค๋ณต๋๋ ํ ์คํธ ์ฝ๋๋ฅผ ํ๋ผ๋ฏธํฐํ๋ ํ ์คํธ ์ฝ๋๋ก ๋ฆฌํฉํ ๋ง (์์)
test.each([["999"], ["0"], ["-123"]])("์ฒ์ ๋ฏธ๋ง์ ๊ธ์ก์ ๋ํ ์์ธ ์ฒ๋ฆฌ", (input) => {
expect(() => {
const app = new App(input);
app.play();
}).toThrow();
}
);
[ ํ ์คํธ๋ฅผ ์ํ ์ฝ๋๋ ๊ตฌํ ์ฝ๋์์ ๋ถ๋ฆฌ๋์ด์ผ ํ๋ค ]
ํ ์คํธ๋ฅผ ์ํด ๊ตฌํ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์ข์ง ์์ ์ต๊ด์ด๋ผ๊ณ ํ๋ค. ํ ์คํธ๋ฅผ ๋ ์ฝ๊ฒ ํ๊ธฐ ์ํด ์ ๊ทผ ์ ์ด์๋ฅผ ๋ณ๊ฒฝํ๊ณ , ๋ฉ์๋๋ฅผ ๊ตฌํ ์ฝ๋์ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค๊ณ ํ๋ค. ๊ทธ๋ฌ๋ ์ด๋ ๊ฒ ํ๋ฉด ๊ตฌํ ์ฝ๋๊ฐ ํ ์คํธ์ ์ข ์๋๊ณ , ์บก์ํ๊ฐ ๊นจ์ง๋ฉฐ ์ฝ๋์ ์ผ๊ด์ฑ์ด ์ ํด๋๋ค๊ณ ํ๋ค. ์๋์ ๋ ์ผ์ด์ค๋ฅผ ์๊ธฐ์ตํ๊ณ ์ ์ํด๋ณด์.
- ํ ์คํธ๋ฅผ ์ํด # prefix๋ฅผ ๋ฐ๊พธ๋ ๊ฒฝ์ฐ
- ํ ์คํธ ์ฝ๋์์๋ง ์ฌ์ฉ๋๋ ๋ฉ์๋
[ ๋จ์ ํ ์คํธํ๊ธฐ ์ด๋ ค์ด ์ฝ๋๋ฅผ ๋จ์ ํ ์คํธํ๊ธฐ ]
ํ ์คํธ๊ฐ ์ด๋ ค์ด ์ฝ๋๋ ์ธ๋ถ๋ก ๋ถ๋ฆฌํ์ฌ ํ ์คํธ ํ๋ ๊ฒ์ด ์ข๋ค๊ณ ํ๋ค. ์์๋ฅผ ๋ณด๋ ๋ฐ๋ก ์ดํด๊ฐ ๋์๋ค.
A :
const MissionUtils = require("@woowacourse/mission-utils");
class Lotto {
#numbers
constructor() {
this.#numbers = Randoms.pickUniqueNumbersInRange(1, 45, 6)
}
}
---
class LottoMachine {
execute() {
const lotto = new Lotto()
}
์์ numbers ํ๋ ์์ฒด๊ฐ ๋๋ค ์ซ์๋ฅผ ๋ฐ๊ณ ์๋ ๊ฒ์ผ๋ก ์ ์ธ๋์ด์๋ค. ์ด๋ ๊ฒ ๋๋ฉด ๋ด๋ถ์ ํ๋์ ์ ์ธ๋์ด์๋ ์ซ์๋ฅผ ํ ์คํธ ํด์ผํ๊ธฐ ๋๋ฌธ์ ์ด๋ ค์ฐ๋ฏ๋ก ์ธ๋ถ๋ก ๋ถ๋ฆฌํ๋ ์๋๋ฅผ ํ๋ ๊ฒ์ด ์ข๋ค.
B :
const MissionUtils = require("@woowacourse/mission-utils");
class Lotto {
#numbers
constructor(numbers) {
this.#numbers = numbers
}
}
class LottoMachine {
execute() {
const numbers = Randoms.pickUniqueNumbersInRange(1, 45, 6)
const lotto = new Lotto(numbers)
}
}
Random ๊ฐ์ผ๋ก ๋๋ค์ฑ์ ํ ์คํธํด์ผ ํ๋๋ฐ ๊ทธ๋ฌ๋ ค๋จผ Random ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๊ณ ์ ๋์ด์ผ ํ๋ค. ํ์ง๋ง A์ ์ํฉ์์๋ Lotto์ ์ง์ ์์กดํ๋ฏ๋ก ๋๋ค ์์๋ฅผ ํฌํจํ๊ฒ ๋์ด ํ ์คํธ ๊ฒฐ๊ณผ๊ฐ ๋งค๋ฒ ๋ฌ๋ผ์ง ์ ์๋ค. Application, LottoMachine, Lotto๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ํ ์คํธ ํ๊ธฐ ์ด๋ ค์์ง๋ค.
ํ์ง๋ง B์ ์ํฉ์ด ๋๋ฉด LottoMachine์์ Randoms๋ฅผ ์ฐธ์กฐํ๊ณ ์ด ๊ฒฐ๊ณผ๋ฅผ Lotto์ ์ ๋ฌํ๊ธฐ ๋๋ฌธ์ Lotto์์ Randoms ๊ฐ์ ๋ฐ์ ๊ณ ์ ๋ ๊ฒฐ๊ณผ ํ๋๋ง ๊ฐ์ง๊ณ ํ ์คํธ๊ฐ ๊ฐ๋ฅํ๊ฒ ๋๋ค.
์ด๋ ๊ฒ ๋๋ฉด ๋ ๋ฆฝ์ ์ธ ๋จ์ ํ ์คํธ๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๋ถ๋ฆฌํ์ฌ Lotto๊ฐ ํ ์คํธํ๊ธฐ ์ฌ์ด ์ํ๊ฐ ๋๊ธฐ ๋๋ฌธ์ B์ฒ๋ผ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ข๋ค.
์ฐธ๊ณ ๊ธ : https://tecoble.techcourse.co.kr/post/2020-05-07-appropriate_method_for_test_by_parameter/
๋ฉ์๋ ์๊ทธ๋์ฒ๋ฅผ ์์ ํ์ฌ ํ ์คํธํ๊ธฐ ์ข์ ๋ฉ์๋๋ก ๋ง๋ค๊ธฐ
…
tecoble.techcourse.co.kr
์ค๊ฐ KPT ํ๊ณ
๋ก๋์ ๋๋ค ๊ฐ๊ณผ ๋น์ฒจ ๋ฒํธ๋ฅผ ๋งค์นญํ์ฌ ๋น์ฒจ ํต๊ณ ๊ฒฐ๊ณผ๋ฅผ ๊ณ์ฐํ๋ ๋ถ๋ถ์ด ๊ฐ์ฅ ์ด๋ ค์ ๊ณ , ์ด ๋ถ๋ถ์ด ํต์ฌ ๊ธฐ๋ฅ์ด์๋ค. ์ด๋ป๊ฒ ํด์ผ ํ ์ง ๋ง๋งํ๋๋ฐ, ์๊ตฌ์ฌํญ์์ else ์ฌ์ฉ์ ์ง์ํ๋ผ๋ ์ง์นจ ๋๋ถ์ if๋ง์ผ๋ก ๋ฉ์๋๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ ์ตํ๊ฒ ๋์๋ค. else๋ฅผ ์ง์ํ๋ ์ด์ ๋ฅผ ์ฐพ์๋ณด๋ ์ฝ๋์ ๊ฐ๋
์ฑ์ ๋์ด๊ณ ๋ณต์ก์ฑ์ ์ค์ฌ์ค๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค. else๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋์ ์ค์ฒฉ๋๊ฐ ๋์์ ธ ์ฝ๊ธฐ ์ด๋ ต๊ณ , ์์ ์ด๋ ๋ก์ง ํ์ฅ ์ ์ค์๊ฐ ๋ฐ์ํ๊ธฐ ์ฌ์ฐ๋ฏ๋ก if์ return์ ์ ์ ํ ํ์ฉํด ๋ช
ํํ๊ฒ ์์ฑํ๋ ๊ฒ์ด ์ข๋ค๋ ์ ์ ๋ฐฐ์ ๋ค.
๊ตฌํ์ ์ง์คํ๋ค ๋ณด๋ ์์ ๊ฐ์ ์ฒ๋ฆฌํ๋ ์์ธ ์ํฉ์ ๋น ๋จ๋ฆฐ ๊ฒ์ด ๊ธฐ์ต์ ๋จ๋๋ค. 1์ฃผ์ฐจ๋ถํฐ ์ ๊ฒฝ ์ผ๋ ์์ธ ์ํฉ์ 3์ฃผ์ฐจ์ ๊ณ ๋ คํ์ง ๋ชปํ๋ค๋ ์ ์ด ์์ฌ์ ๋ค. ํ์ง๋ง ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์ ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ์ค๊ณํ๋ ๋ฒ์ ์ฒด๊ฐํ ์ ์์๋ค. ๋ฉ์๋๋ฅผ 15์ค ์ด๋ด๋ก ์์ฑํด์ผ ํ๊ธฐ์ ๊ธฐ๋ฅ ๋จ์๋ฅผ ์ต๋ํ ๋ถ๋ฆฌํ๋ค ๋ณด๋, ๊ฐ์ฒด๋ณ๋ก ์์
ํ ์ ์๋๋ก ๊ตฌ์ฑํ๊ฒ ๋์๊ณ , ์์ฐ์ค๋ฝ๊ฒ ๊ฐ์ฒด์ ์ฐ๊ด๋ ํจ์๋ ์์, ์ ํจ์ฑ ๊ฒ์ฌ ํ์ผ๋ค์ ๋๋ ํฐ๋ฆฌ๋ณ๋ก ๊ด๋ฆฌํ๊ณ ๊ธฐ๋ฅ๋ณ๋ก ํ์ผ์ ๋ถ๋ฆฌํ๊ฒ ๋์๋ค.
์์ฌ์ด ์ ์ View ํด๋์ค๋ก UI ๋ก์ง์ ๋ถ๋ฆฌํ์ง ๋ชปํ ๊ฒ์ด๋ค. ์ด๋ก ์ธํด ๋น๋๊ธฐ ํจ์๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ฒ ๋์๊ณ , Lotto ํด๋์ค๋ฅผ ํ์ฉํด ๊ฐ์ฒด๋ฅผ ๋ถ๋ฆฌํ๋ ค ํ์ผ๋ UI ๋ก์ง๊ณผ์ ํตํฉ์ด ์ด๋ ค์ ๋ฐ๋ก ๋ถ๋ฆฌ๋ ํ์ผ์ ๋ง๋ค๊ฒ ๋์๋ค. Lotto ํด๋์ค ํ์ผ์ ํตํด ์ฐ์ํํ
ํฌ์ฝ์ค์ ์๋๋ฅผ ์ถฉ๋ถํ ์ดํดํ๊ณ ๋ฐ์ํ์ด์ผ ํ๋๋ฐ, ๊ทธ ๋ถ๋ถ์ ๋์น ๊ฒ์ด ์์ฝ๋ค. ๋ค๋ง ๊ณตํต ํผ๋๋ฐฑ ๋๋ถ์ ํ๋ผ์ด๋น ํ๋๋ฅผ ์์ฑํด ํ์ฉํ๋ ๋ฒ์ ์๊ฒ ๋์๊ณ , ๋์ํ๋ ์ฝ๋์๋ง ์ง์คํ๋ค ๋์ณค๋ ๊ฐ๋
๋ค์ ์ ๋๋ก ์ดํดํ ์ ์๋ ๊ณ๊ธฐ๊ฐ ๋์ด ์๋ฏธ๊ฐ ๊น์๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก, ๊ณตํต ํผ๋๋ฐฑ์ ํตํด 3์ฃผ์ฐจ์ ํ
์คํธ ์ฝ๋ ์์ฑ๋ฒ์ ๋ฐฐ์ฐ๋ฉด์ ์์ธ ํ
์คํธ์์ ๊ฐ์ด ๋์ผํ ๊ฒฝ์ฐ ํ๋ผ๋ฏธํฐํ๋ ํ
์คํธ๋ก ์ค๋ณต์ ์ค์ด๋ ๋ฐฉ๋ฒ๋ ์๊ฒ ๋์๋ค. ๋ํ ํ๋ผ์ด๋น ํ๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์๊ณผ ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ ํ์์ฑ์ ์ฝ๋ ์์ฑ ๊ณผ์ ์์ ์ฒด๊ฐํ ์ ์์๋ค. ๋ฆฌํฉํ ๋ง ์์ด ์๋ฒฝํ ์ค๊ณ๋ฅผ ํ๊ธฐ๋ ์ด๋ ต๊ณ , ์ ์ง๋ณด์์ ๊ฐ๋
์ฑ์ ๋์ด๋ฉฐ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ธฐ ์ํด์๋ ๊ฐ์ฒด์ ๋ฉ์๋๊ฐ ์ ๋ถ๋ฆฌ๋์ด์ผ ํ๋ค๋ ์ ์ ๋ฆฌํฉํ ๋ง์ ํตํด ๊นจ๋ซ๊ฒ ๋์๋ค.
Keep (์ ์งํ๋ฉด ์ข์ ์ )
- ๊ธฐ๋ฅ๋ณ๋ก ํ์ผ์ ๋ถ๋ฆฌํ๊ณ ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ตฌ๋ถํ๋ ๊ณผ์ ๊ฑฐ์น๊ธฐ
- ์ด ๊ณผ์ ์ ์ฝ๋์ ๊ตฌ์กฐ๋ฅผ ๋ช ํํ ํ๊ณ ๊ฐ๋ ์ฑ์ ๋์ฌ์ฃผ๋๋ฐ ๋์์ ์ฃผ์๋ค. ํ์ผ์ ๊ตฌ๋ถํ๋ ๋ฆฌํฉํ ๋ง์ ํ ๋๋ ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ๊ธฐ ๋๋ฌธ์ ์์ผ๋ก๋ ์ต๊ดํํด์ผ ํ๋ ๊ฒ ๊ฐ๋ค.
- ํ
์คํธ ์ฝ๋๋ฅผ ๊ธฐ๋ฅ ๊ตฌํํ ๋ ๋ง๋ค ์์ฑํ๋ ๊ฒ
- ๋จ์๋ณ๋ก ๊ธฐ๋ฅ์ ๊ตฌํํ ๋๋ง๋ค ํ ์คํธ๊ฐ ํ์ํ ๋ถ๋ถ์ ๋ฐ๋ก๋ฐ๋ก ์์ฑํ๋ ๊ฒ์ผ๋ก ๋ชฉํ๋ก ์ผ๊ณ 3์ฃผ์ฐจ๋ฅผ ์งํํ๋ค. ์์ง ์ต๊ดํ๋์ง ์์์ง๋ง ์์์ ์ผ๋ก ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๊ฒ์ฆํ๋ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ ๊ฒ ๊ฐ๋ค.
- ํจ์(๋ฉ์๋) ๊ธธ์ด๋ฅผ ์ ํํ๋ ๊ธฐ์ค์ ์งํจ ๊ฒ
- ๊ธธ์ด๋ฅผ ์ ํํ์ฌ ๊ธฐ๋ฅ ๋จ์๋ก ์ต๋ํ ๋ถ๋ฆฌํ์ฌ ๋ฉ์๋๋ฅผ ์ค๊ณํ ์ ์ ๊ฐ์ฒด ์งํฅ ์ค๊ณ์์ ํ์ํ ๊ฒ ๊ฐ๋ค.
- ๊ธธ์ด๋ฅผ ์ค์ด๊ธฐ ์ํด์ ๊ธฐ๋ฅ์ ๋ถ๋ฆฌํ๋ฉด ๊ฐ์ฒด๋ฅผ ์ด๋ป๊ฒ ๋ถ๋ฆฌํ์ฌ ํ์ฉํด์ผ ํ๋ ์ง ๊ฐ์ด ์กํ๋ ๊ฒ ๊ฐ๋ค.
- ๋ํ ํด๋์ค์ ๋ฉ์๋์ ์ญํ ์ด ๋ช ํํด์ง๋ ๊ฒ ๊ฐ์ ๊ธฐ์ค์ ์ ์ก์์ ๊ทธ ๊ธฐ์ค์ ๋ง์ถฐ ์ค๊ณํด์ผ ํ ๊ฒ ๊ฐ๋ค.
Problem (๊ณ ์ณ์ผํ ๋ฌธ์ ์ )
- ํ๋ผ์ด๋น ํ๋๋ฅผ ์ฌ์ฉํ์ง ์์ ๊ฐ์ฒด ์งํฅ ์ค๊ณ ์์น์ ์งํค์ง ๋ชปํ ๊ฒ
- ๋น์ฆ๋์ค ๋ก์ง๊ณผ UI ๋ก์ง์ ๋ถ๋ฆฌํ์ง ์์ ๋จ์ผ ์ฑ ์ ์์น์ ์๋ฐฐํ ๊ฒ
- ์์ธ ์ํฉ์ ์ถฉ๋ถํ ๊ณ ๋ คํ์ง ๋ชปํ ๊ฒ
- ํด๋์ค์์ getter๋ฅผ ๋จ์ฉํ ๊ฒ
- ํ๋๋ฅผ ๋ถํ์ํ๊ฒ ๋จ๋ฐํ์ฌ ์บก์ํํ์ง ๋ชปํ ๊ฒ
Try (Problem์ ๊ธฐ๋ฐ์ผ๋ก ๋ณด์ํ์ฌ ์๋ก ์๋ํด๋ณผ ์ )
- ํ๋ผ์ด๋น ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ์งํฅ ์ค๊ณ ์์น์ ์ง์ผ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ ๊ฒ
- View ํด๋์ค๋ฅผ ๋ง๋ค์ด์ ๋น์ฆ๋์ค ๋ก์ง๊ณผ UI๋ก์ง์ ์ฒ ์ ํ ๋ถ๋ฆฌํ ๊ฒ
- View ํด๋์ InputView.js์ OutputView.js๋ฅผ ์ค๊ณํ์ฌ ๋ช ํํ ๊ตฌ๋ถํ์ฌ ์ฌ์ฉํ ๊ฒ์ด๋ค.
- ์์ธ ์ํฉ์ ์ฌ์ ์ ์ถฉ๋ถํ ์ ์ํ๊ณ ์ค๊ณํ๊ธฐ
- ๊ธฐ๋ณธ์ ์ธ ์์ธ ์ํฉ์ ์ถฉ๋ถํ ๊ณ ๋ คํ ํ์ ๊ตฌํ์ ์์ํ๊ณ ๊ทธ ์ดํ์ ์ถ๊ฐ์ ์ผ๋ก ๊ณ ๋ คํด์ผ ํ ์์ธ ์ํฉ์ ์ถ๊ฐํ๋ ๊ฒ์ผ๋ก ์ต๊ด์ ๋ค์ธ๋ค.
- ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ ๋ ๋ฐ๋ณต๋๋ ํ ์คํธ๋ ํ๋ผ๋ฏธํฐํ๋ ํ ์คํธ๋ก ๋ฆฌํฉํ ๋ง ํ ๊ฒ
- get ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ๊ฐ์ ์ธ๋ถ์์ ๋ณ๊ฒฝ ๊ฐ๋ฅํ๋๋ก ํ๋ ๊ฒ์ด ์๋๋ผ ๊ฐ์ฒด ๋ฉ์์ง๋ฅผ ํ์ฉํ์ฌ ๊ฐ์ฒด ๋ด๋ถ์ ๋ฉ์๋๋ก ์์ ์ ์ํํ๋๋ก ํ ๊ฒ
- ํ๋๋ฅผ ์ต์ํํ๊ณ ์บก์ํ๋ฅผ ๊ฐํํ๊ธฐ์ํด ํ๋์ ์ญํ ๊ณผ ๊ด๋ จ์ฑ์ ๋ฐ๋ผ ํด๋์ค ๊ตฌ์กฐ ์ต์ ํํ๊ธฐ
๊ฒฐ๋ก
KPT ํ๊ณ ์ ์ฌํญ๊ณผ ๊ณตํต ํผ๋๋ฐฑ์ ์ ๋ฐ์ํ์ฌ ์ฝ๋๋ฅผ ์ค๊ณํ๊ณ ๋์ํ๋ ์ฝ๋๋ฅผ ๊ตฌํํ๋, ์์น์ ์ง์ผ ์ค๊ณ๋ ์ฝ๋๋ก ๋ฆฌํฉํ ๋ง ํ๋๋ฐ์ ์ง์คํด๋ณด๊ณ ์ ํ๋ค.
'๐ Front-End > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] ํด๋์ค์ ํ๋ผ์ด๋น ํ๋ ๊ตฌํ ์ด์ (4) | 2024.11.06 |
---|---|
[JS][์ฐํ ์ฝ] ํ๋ฆฌ์ฝ์ค 2์ฃผ์ฐจ ๊ณตํต ํผ๋๋ฐฑ์ ํตํ KPTํ๊ณ (19) | 2024.10.31 |
[JS][์ฐํ ์ฝ] ํ๋ฆฌ์ฝ์ค 1์ฃผ์ฐจ ๊ณตํต ํผ๋๋ฐฑ์ ํตํ KPTํ๊ณ (10) | 2024.10.24 |
[JS] Prettier๋ก ๋ฌธ์์ด single quotes ์ ๋ ฅ ์ค์ ํ๊ธฐ (2) | 2024.10.18 |