[๐ ์ฌ์ดํด2 - ๋ฏธ์ (๋ธ๋์ญ ๋ฒ ํ )] ๋ฃจ๋ ๋ฏธ์ ์ ์ถํฉ๋๋ค.#1107
[๐ ์ฌ์ดํด2 - ๋ฏธ์
(๋ธ๋์ญ ๋ฒ ํ
)] ๋ฃจ๋ ๋ฏธ์
์ ์ถํฉ๋๋ค.#1107Seonwu-K wants to merge 90 commits intowoowacourse:seonwu-kfrom
Conversation
jurlring
left a comment
There was a problem hiding this comment.
๋ฃจ๋ ์๋
ํ์ธ์~
์ฌ์ดํด2๋ ๋น ๋ฅด๊ฒ ๊ตฌํํด์ฃผ์
จ๋ค์!
์ฝ๋ฉํธ๋ ์ง๋ฌธ ๋จ๊ฒจ๋์๋๋ฐ ์๊ฐ ๊ด์ฐฎ์ผ์ค ๋ ํ์ธํด์ฃผ์ธ์~!
| } | ||
| } | ||
|
|
||
| private void initGame() { |
There was a problem hiding this comment.
ํ์ธํด๋ณด๋ ๋ง์ํด์ฃผ์ ๊ฒ์ฒ๋ผ ๊ฐ์ ์นด๋๊ฐ ์ฌ๋ฌ ๋ฒ ์ถ๋ ฅ๋๋ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
ํ๋ ์ด์ด๋ณ๋ก ํธ๋๋ฅผ ์กฐํํด์ผ ํ๋ ๋ถ๋ถ์์ ์๋ชป๋ ์ฐธ์กฐ๊ฐ ์ด๋ฃจ์ด์ง๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํด๋น ๋ฌธ์ ํด๊ฒฐํ๊ณ ๋ค์ ์ปค๋ฐ ์ฌ๋ฆฌ๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
|
|
||
| import java.util.List; | ||
|
|
||
| public class GameController { |
There was a problem hiding this comment.
Controller ๋์ ์ ๋ํ ๊ณ ๋ฏผ
์ฃผ๋๊ฐ ์๊ฐํ์๋
Controller๊ฐ ํ์ํ ์ํฉ์ ์ด๋ค ๊ฒฝ์ฐ์ธ์ง
์ด๋ฒ ๋ฏธ์ ์์ Controller๋ฅผ ๋์ ํ ์ ์ ํ์ด ์ค๋ฒ ์์ง๋์ด๋ง์ผ๋ก ๋๊ปด์ง์ จ๋์ง
ํน์ Controller ์์ด ๋๋ฉ์ธ ๊ฐ์ฒด ์ค์ฌ์ผ๋ก ํ๋ฆ์ ๊ตฌ์ฑํ๋ ๊ฒ์ด ๋ ๋์ ์ ๊ทผ์ด์๋์ง
์ ๋ต์ ์๋์ง๋ง ์ ์๊ฐ์ ๋ง์๋๋ฆฌ๋ฉด์,
Controller๋ผ๋ ๊ฐ๋
์ ๊ฒฐ๊ตญ MVC ํจํด์์ ๋์จ ๊ฒ ๊ฐ์์.
ํจํด์ด๋ผ๋ ๊ฒ์ ๋ง์ ๊ฐ๋ฐ์๋ค์ด ๋ค์ํ ์๊ตฌ์ฌํญ์ ๊ตฌํํ๋ฉด์ "์ด๋ฐ ์ํฉ์์๋ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ์ค๊ณํ๋ ๊ฒ์ด ๋ ๋ซ๊ฒ ๋ค"๋ ๊ฒฝํ์ด ์์ฌ ๋ง๋ค์ด์ง ๊ฒ์ด๋ผ๊ณ ์๊ฐํด์~ ๊ทธ๋์ ๋ฐ๋์ ์ ์ฉํด์ผ ํ๋ ๊ฒ๋ ์๋๊ณ , ํญ์ ์ ๋ต์ด ๋๋ ๊ฒ๋ ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค!
MVC ํจํด์ ํนํ View๊ฐ ์กด์ฌํ๋ ์ํฉ์์ ์ญํ ์ ๋ถ๋ฆฌํ๊ธฐ ์ํด ๋์
ํ๊ธฐ ์ข์ ํจํด์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ฌ์ฉ์ ์
๋ ฅ๊ณผ ์ถ๋ ฅ์ด ์๊ณ , ๊ทธ ์ฌ์ด์์ ํ๋ฆ์ ์กฐ์ ํด์ผ ํ ๋ Controller๊ฐ ์์ฐ์ค๋ฝ๊ฒ ๋ฑ์ฅํ๊ฒ ๋๋ ๊ฒ ๊ฐ์์.
๊ทธ๋์ ์ด๋ฒ ๋ฏธ์
์์ Controller๋ฅผ ๋์
ํ ๊ฒ์ด ์ค๋ฒ์์ง๋์ด๋ง์ด๋ผ๊ณ ๋๊ปด์ง์ง๋ ์์ต๋๋ค.
๊ฒ์ ์งํ ํ๋ฆ์ ๊ด๋ฆฌํ๊ณ , ์
๋ ฅ๊ณผ ์ถ๋ ฅ์ ์ฐ๊ฒฐํ๋ ๊ฐ์ฒด๊ฐ ํ๋ ์๋ ๊ตฌ์กฐ ์์ฒด๋ ์ถฉ๋ถํ ์์ฐ์ค๋ฌ์ด ์ค๊ณ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ค๋ง ํํธ์ผ๋ก ๋ค์๋ ์๊ฐ์ PR์ ๋ณด๋ฉด์ ํจํด์ด๋ผ๋ ๊ฒ์ด ๋น์ฐํ ์ฌ์ฉํด์ผ ํ๋ ๊ตฌ์กฐ์ฒ๋ผ ๋ฐ์๋ค์ด์๋ ๋ถ๋ค์ด ์์ด๋ณด์ฌ์..!
ํจํด์ ์๊ณ , ์ดํดํ๊ณ , ์ ํ์ํ์ง ๋ฉ๋ํ ์ํ์์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค๊ณ ์๊ฐํ๋๋ฐ, ๋๋ก๋ ๊ทธ๋ฐ ๊ณ ๋ฏผ ์์ด "์๋ ์ด๋ ๊ฒ ํ๋๊น", "๋ค ์ด๋ ๊ฒ ํ๋๊น"๋ผ๋ ์ด์ ๋ก ์ ์ฉ๋๋ ๊ฒฝ์ฐ๋ ์๋ ๊ฒ ๊ฐ์์.
๊ทธ๋ฆฌ๊ณ ๋ง์ํด์ฃผ์ ๊ฒ์ฒ๋ผ ๋๋ฉ์ธ ๊ฐ์ฒด๋ค์ด ์์ง์ฑ ์๊ฒ ํ๋ ฅํ๋๋ก ๋ง๋ค๊ณ ์ธ๋ถ์์๋ ํ๋์ ์ง์ ๋ฉ์๋๋ง ํธ์ถํ๋๋ก ๊ตฌ์ฑํ๋ ๋ฐฉ์๋ ์ถฉ๋ถํ ์ข์ ์ค๊ณ๊ฐ ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค!! ์ํฉ๊ณผ ๊ตฌ์กฐ์ ๋ฐ๋ผ ๋ ๋ฐฉ์ ๋ชจ๋ ์ ํ์ง๊ฐ ๋ ์ ์์ ๊ฒ ๊ฐ์์.
๋ค๋ง ๋ง์์ฃผ์ Controller์ ์ญํ ์ด๋ผ๋ฉด GameManager๋ผ๋ ๋๋ฉ์ธ์ Controller๊ฐ ์ํ๋ก ๊ฐ์ง๊ณ ์๋๊ฒ ๋ง๋์ง์ ๋ํ ๊ณ ๋ฏผ์ ํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์์!
There was a problem hiding this comment.
Controller ๋์ ์ ๋ํด ์ ๋ฆฌํด์ฃผ์ ๊ด์ ์ด ๋ง์ด ๋์์ด ๋์์ต๋๋ค.
์ ๋ ์ฒ์์๋ ์
๋ ฅ๊ณผ ์ถ๋ ฅ ์ฌ์ด์ ํ๋ฆ์ ์กฐ์ ํ๋ ์ญํ ์ด ํ์ํ๋ค๊ณ ์๊ฐํด์
Controller๋ฅผ ๋๋ ๊ตฌ์กฐ๋ฅผ ์ ํํ์ต๋๋ค.
๋ง์ํด์ฃผ์ ๊ฒ์ฒ๋ผ View๊ฐ ์กด์ฌํ๊ณ ์ฌ์ฉ์ ์
๋ ฅ๊ณผ ์ถ๋ ฅ์ด ์๋ ์ํฉ์์๋
ํ๋ฆ์ ์กฐ์ ํ๋ ๊ฐ์ฒด๊ฐ ์๋ ๊ฒ์ด ์์ฐ์ค๋ฝ๋ค๊ณ ์๊ฐํ์ต๋๋ค.
์ด๋์ชฝ์ด ๋ง๋์ง ๋ง์ ๊ณ ๋ฏผ์ด ๋์๋ ๋งํผ ๋ ๋ค ๊ทผ๊ฑฐ๊ฐ ์๋ ์ ํ์ง๊ฐ ๋ ์ ์์ ๊ฒ ๊ฐ๋ค๋ ์๊ฒฌ์ ๋ง์์ด ๋์ ๋๋ค.
๋ค๋ง ๋ฆฌ๋ทฐ๋ฅผ ์ฝ์ผ๋ฉด์ ๋ง์ํด์ฃผ์ ๊ฒ์ฒ๋ผ
Controller๊ฐ GameManager๋ฅผ ์ํ๋ก ๊ฐ์ง๊ณ ์๋ ๊ตฌ์กฐ๊ฐ ์ ์ ํ์ง์ ๋ํด์๋
์กฐ๊ธ ๋ ๊ณ ๋ฏผํด๋ณผ ํ์๊ฐ ์๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์ด์ ์ ์ฝ๋๋ฅผ ์์ธํ ์ดํด๋ณด์์ต๋๋ค.
ํ์ฌ ์ GameManager๋ ๋๋ฉ์ธ์ด๋ผ๊ธฐ ๋ณด๋ค๋,
Players, Dealer, Deck์ ์กฐ์จํ๋ฉด์ ๊ฒ์ ์งํ ํ๋ฆ์ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด์ ๊ฐ๊น์ด ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๋์ ์ปจํธ๋กค๋ฌ๊ฐ ๋งค๋์ ๋ฅผ ์ํ๋ก์ ๊ฐ์ง๊ณ ์๋ ๊ฒ๋ ๋ฌธ์ ๋ ์๋์ง ์์๊น? ์๊ฐํฉ๋๋ค.
๋ค๋ง ํ๋ ์ด์ด ์ ๋ณด๋ฅผ ์ปจํธ๋กค๋ฌ๊ฐ ์ง์ ์ ์ผ๋ก ์ฐธ์กฐํ๊ณ ์๋ค๋ ์ ์ด ๊ณ์ ์ ๊ฒฝ์ฐ์ด๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ต์ ์ ๊ตฌ์กฐ๋ ์๋์ง๋ง ํ์ฌ์ ์ ๊ฐ ๋ ์ฌ๋ฆด ์ ์๋ ๊ตฌ์กฐ์์๋ ๊ฐ์ฅ ํฉ๋ฆฌ์ ์ธ ๊ตฌ์กฐ๋ผ๊ณ ํ๋จ๋์ด
ํ์ฌ์ ์ฝ๋๋ฅผ ์ ์งํ ๊ฒ ๊ฐ์ง๋ง ์ปจํธ๋กค๋ฌ์ ์ฑ
์์ ๋ ์ ์๋ ๊ตฌ์กฐ๊ฐ ๋ฌด์์ด ์์์ง ๊ณ์ ๊ณ ๋ฏผํด๋ณด์์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.
์ข์ ์๊ฒฌ ๊ฐ์ฌํฉ๋๋ค!
| <!-- ์ด์ ์์ฑ --> | ||
|
|
||
|
|
||
| ## ์ด๋ค ๋ถ๋ถ์ ์ง์คํ์ฌ ๋ฆฌ๋ทฐํด์ผ ํ ๊น์? |
There was a problem hiding this comment.
์ค๊ณ ๊ฒฐ์ ์ ๋ด๋ฆด ๋์ ๊ธฐ์ค์ ๋ํ ๊ณ ๋ฏผ
๋๋ฉ์ธ ์ค๊ณ๋ฅผ ํ ๋
์ฌ๋ฌ ์ค๊ณ ์ ํ์ง ์ค ํ๋๋ฅผ ๊ฒฐ์ ํ ๋ ์ด๋ค ๊ธฐ์ค์ผ๋ก ํ๋จํ์๋์ง
๊ฒฝํ์ด ๋ถ์กฑํ ์ด๋ณด ๊ฐ๋ฐ์๊ฐ ์ค๊ณ ๊ฒฐ์ ์ ํ ๋ ์ค์ํ๊ฒ ์ก์์ผ ํ ๊ธฐ์ค์ด ๋ฌด์์ธ์ง
์ ๋ํด ์กฐ์ธ์ ๋ฃ๊ณ ์ถ์ต๋๋ค.
์ผ๋จ ํ์ ์ด ์์ง ์๋๋ค๋ผ๊ณ ๋ง์ํด ์ฃผ์
จ๋๋ฐ ๋๋ฌด ์กฐ๊ธํดํ์ค ํ์๋ ์์ ๊ฒ ๊ฐ์์!
์ง๊ธ ๋ง์ํด์ฃผ์ ๊ณ ๋ฏผ ์์ฒด๊ฐ ๋ฐ๋ก ๊ทธ ๊ธฐ์ค์ ๋ง๋ค์ด๊ฐ๋ ๊ณผ์ ์ด๋ผ๊ณ ์๊ฐํด์ :)
์ค๊ณ๋ฅผ ํ๋ค ๋ณด๋ฉด ์ฌ์ค ์ ๋ต์ด ์๋ ๊ฒฝ์ฐ๋ ๋ง์ง ์์ ๊ฒ ๊ฐ์์~ ๊ฐ์ ๋ฌธ์ ๋ผ๋ ๊ฐ๋ฐ์๋ง๋ค ๋ค๋ฅธ ๊ตฌ์กฐ๋ฅผ ์ ํํ๊ธฐ๋ ํ๊ณ , ์ํฉ์ ๋ฐ๋ผ ๋ ์ ์ ํ ์ค๊ณ๊ฐ ๋ฌ๋ผ์ง๊ธฐ๋ ํ๋๊น์!
๊ทธ๋์ ์ ๋ ์ค๊ณ ๊ฒฐ์ ์ ํ ๋ ํญ์ ๊ณ ๋ คํ๋ ๋ถ๋ถ์ ์๋ ์ธ ๊ฐ์ง์ธ๋ฐ์.
- ์ฝ๋๊ฐ ์๊ตฌ์ฌํญ๋๋ก ๋์ํ๋๊ฐ
- ๋ค๋ฅธ ์ฌ๋์ด ์ฝ์์ ๋ ์ดํดํ๊ธฐ ์ฌ์ด๊ฐ
- ์ดํ์ ๋ณ๊ฒฝ์ด ์๊ฒผ์ ๋ ์์ ํ๊ธฐ ์ฌ์ด ๊ตฌ์กฐ์ธ๊ฐ
์ฌ๋ฌ ์ค๊ณ ์ ํ์ง๊ฐ ์์ ๋๋ ๊ฒฐ๊ตญ ์ด ์ธ ๊ฐ์ง ๊ธฐ์ค์์ ์ด๋ ์ชฝ์ด ๋ ๋์์ง ์๊ฐํด๋ณด๊ณ ๊ฒฐ์ ํ๋ ํธ์ ๋๋ค!
๋ ์ด๋ณด ๊ฐ๋ฐ์๊ฐ ์ค๊ณ ๊ฒฐ์ ์ ํ ๋ ๊ฐ์ฅ ์ค์ํ๊ฒ ๊ฐ์ ธ๊ฐ๋ฉด ์ข์ ๊ธฐ์ค์ ๋จ์ผ ์ฑ
์ ์์น(SRP)์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ฐ์ฒด๊ฐ ๋๋ฌด ๋ง์ ์ผ์ ํ๊ณ ์์ง๋ ์์์ง, ํ๋์ ๊ฐ์ฒด๊ฐ ํ๋์ ์ฑ
์์ ์ง์คํ๊ณ ์๋์ง๋ฅผ ๊ณ์ ์์ฌํด๋ณด๋ ๊ฒ๋ง์ผ๋ก๋ ์ค๊ณ๊ฐ ๊ฝค ๋ง์ด ์ ๋ฆฌ๋๋ ๊ฒฝํ์ ํ๊ฒ ๋๋ ๊ฒ ๊ฐ์์~
There was a problem hiding this comment.
๋ง์ํด์ฃผ์ ๊ธฐ์ค๋ค์ด ๋ง์ด ๋์์ด ๋์์ต๋๋ค.
ํผ์ ์ค๊ณ ํ ๋ ๋ช
ํํ ์ ๋ต์ด ์๋ ๋ฌธ์ ๋ค ๋ณด๋ ๋ต๋ตํจ์ ๋๋ ๋๊ฐ ๋ง์๋๋ฐ,
์ ๋ฆฌํด์ฃผ์ ๊ฒ์ฒ๋ผ
- ์๊ตฌ์ฌํญ๋๋ก ์ ๋์ํ๋์ง
- ๋ค๋ฅธ ์ฌ๋์ด ์ฝ๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ๊ตฌ์กฐ์ธ์ง
- ์ดํ ๋ณ๊ฒฝ์ด ์๊ฒผ์ ๋ ์์ ํ๊ธฐ ์ฌ์ด์ง
์ด ์ธ ๊ฐ์ง ๊ธฐ์ค์ผ๋ก ๋น๊ตํด๋ณด๋ ๋ฐฉ์์ด ํ๋จํ ๋ ์ข์ ๊ธฐ์ค์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด๋ฒ ๋ฏธ์ ์์๋ ๊ธฐ๋ฅ ๊ตฌํ์ ์ง์คํ๋ค ๋ณด๋ ์ค๊ณ ๊ฒฐ์ ์ ๋ด๋ฆด ๋ ์ด๋ฐ ๊ธฐ์ค์ ์ถฉ๋ถํ ์ ์ฉํ์ง ๋ชปํ๋ ๊ฒ ๊ฐ์ ์์ฌ์์ด ๋จ์ต๋๋ค.
์์ผ๋ก๋ ์ค๊ณ ์ ํ์ง๊ฐ ์ฌ๋ฌ ๊ฐ ์์ ๋ ๋ง์ํด์ฃผ์ ๊ธฐ์ค๋ค์ ๊ฐ์ง๊ณ
์กฐ๊ธ ๋ ์์์ ์ผ๋ก ๋น๊ตํด๋ณด๋ ์ฐ์ต์ ํด๋ณด๊ฒ ์ต๋๋ค. ์ข์ ์กฐ์ธ ๊ฐ์ฌํฉ๋๋ค!
|
|
||
| import static org.assertj.core.api.Assertions.assertThat; | ||
|
|
||
| public class PlayerTest { |
There was a problem hiding this comment.
ํ ์คํธ์ ์ค๊ณ์ ๊ด๊ณ์ ๋ํ ๊ณ ๋ฏผ
ํ ์คํธํ๊ธฐ ์ด๋ ค์ด ์ฝ๋๊ฐ ๋ํ๋ฌ์ ๋ ์ด๋ค ์ค๊ณ ๋ฌธ์ ๋ฅผ ๋จผ์ ์์ฌํ์๋์ง
ํ ์คํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๊ณํ๋ ๊ฒฝํ์ ์ด๋ป๊ฒ ์ฐ์ตํด์ผ ํ ์ง
๋จผ์ ํ
์คํธํ๊ธฐ ์ด๋ ค์ด ์ฝ๋๊ฐ ๋ํ๋ฌ์ ๋ ์ด๋ค ์ค๊ณ ๋ฌธ์ ๋ฅผ ์์ฌํ์๋์ง์ ๋ํด ์ ์๊ฐ์ ๋ง์๋๋ฆฌ๋ฉด์,
ํ
์คํธ๊ฐ ์ด๋ ค์ด ์ฝ๋๊ฐ ์๋์ ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ์๋ค๊ณ ์๊ฐํ๋๋ฐ์~
-
ํ๋์ ๊ฐ์ฒด๊ฐ ๋๋ฌด ๋ง์ ์ฑ ์์ ๊ฐ์ง๊ณ ์๋ ๊ฒฝ์ฐ
ํ ์คํธํด์ผ ํ ๊ฒฝ์ฐ์ ์๊ฐ ๋๋ฌด ๋ง์์ง๊ฑฐ๋, ํ ์คํธ ์ฝ๋๊ฐ ์ง๋์น๊ฒ ๋ณต์กํด์ง๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
์ด๋ฐ ๊ฒฝ์ฐ์๋ ์ฑ ์์ ๋๋์ด ๊ฐ์ฒด๋ฅผ ๋ถ๋ฆฌํ ์ ์๋์ง ๋จผ์ ๊ณ ๋ฏผํด๋ณด๋ ๊ฒ ๊ฐ์ต๋๋ค~! -
ํ ์คํธ์์ ์ปจํธ๋กคํ๊ธฐ ์ด๋ ค์ด ์์์ ์์กดํ๊ณ ์๋ ๊ฒฝ์ฐ
์๋ฅผ ๋ค์ด ๋๋ค ๊ฐ, ์๊ฐ, ์ ์ถ๋ ฅ ๊ฐ์ ๋ถ๋ถ์ด ์ง์ ๋ก์ง ์์ ๋ค์ด๊ฐ ์์ผ๋ฉด ํ ์คํธํ๊ธฐ๊ฐ ์ด๋ ค์์ง์ง์ฉ
์ด๋ฐ ๊ฒฝ์ฐ์๋ ํด๋น ๋ถ๋ถ์ ์ต๋ํ ๋ถ๋ฆฌํ๋ ๋ฐฉํฅ์ ๊ณ ๋ฏผํ๊ฒ ๋๋ ๊ฒ ๊ฐ์ต๋๋ค. -
๋ค๋ฅธ ๊ฐ์ฒด๋ค๊ณผ ๋๋ฌด ๋ณต์กํ๊ฒ ์ฝํ ์๋ ๊ฒฝ์ฐ
์ฌ๋ฌ ๊ฐ์ฒด๊ฐ ๊ฐํ๊ฒ ๊ฒฐํฉ๋์ด ์์ผ๋ฉด ํ ์คํธ๋ฅผ ์์ฑํ๊ธฐ๊ฐ ์ ์ ์ด๋ ค์์ง๋ค๊ณ ์๊ฐํด์.
์ด๋ด ๋๋ ๊ตฌ์กฐ๋ฅผ ์กฐ๊ธ ๋จ์ํ๊ฒ ๋ง๋ค ์ ์์์ง ๊ณ ๋ฏผํ๊ธฐ์ํด "์ด ์๊ตฌ์ฌํญ์ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ค ๋ฉ์์ง๊ฐ ํ์ํ์ง"๋ฅผ ๋จผ์ ์๊ฐํ ๋ค ๊ฐ ๋ฉ์์ง๋ฅผ ๋ด๋นํ ๊ฐ์ฒด๋ฅผ ๋๋๋ ๋ฐฉํฅ์ผ๋ก ์ค๊ณ๋ฅผ ๋ค์ ๋ฐ๋ผ๋ณด๊ณคํด์!
๊ทธ๋ฆฌ๊ณ ํ ์คํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๊ณํ๋ ๊ฒฝํ์ ์ด๋ป๊ฒ ์ฐ์ตํ๋ฉด ์ข์์ง์ ๋ํด์๋, ์ง๊ธ ๋๋ผ์ ์ด๋ ค์์ ์์ธ ์ค ํ๋๊ฐ ์ ์ถ๋ ฅ ๋ถ๋ถ์ ํ ์คํธํ๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ผ ์๋ ์๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
๋์ค์ ๊ต์ก ๊ณผ์ ์์ ๋ฐฐ์ฐ์๊ฒ ์ง๋ง ์ธ์ ํ
์คํธ๋ผ๋ ๊ฐ๋
์ด ์๋๋ฐ์, ์ธ์ ํ
์คํธ๋ ์์คํ
์ ์ ์ฒด ํ๋ฆ์ด ์๊ตฌ์ฌํญ๋๋ก ๋์ํ๋์ง ํ์ธํ๋ ํ
์คํธ์
๋๋ค.
์ง๊ธ ๋ฏธ์
์์๋ ์
์ถ๋ ฅ์ ์ง์ ํ
์คํธํ๊ธฐ ์ด๋ ค์ด ๊ตฌ์กฐ๋ผ์ ์ ์ฒด ํ๋ฆ์ ํ
์คํธํ๊ธฐ๊ฐ ์ฝ์ง ์์ง๋ง, ๋ง์ฝ ๊ทธ๋ฐ ํ
์คํธ๊ฐ ๊ฐ๋ฅํด์ง๋ฉด ์ ์ฒด ํ๋ฆ์ ํ
์คํธ๋ก ๋จผ์ ์์ฑํ๊ณ -> ํ
์คํธ๊ฐ ์คํจํ๋ ์ํ(Red)๋ฅผ ๋ง๋ค๊ณ -> ์ฝ๋๋ฅผ ์์ ํด์ ํต๊ณผ(Green)์ํค๊ณ -> ๊ตฌ์กฐ๋ฅผ ์ ๋ฆฌํ๋ ๋ฆฌํฉํ ๋ง
์ด ๊ณผ์ ์ ํตํด ํ ์คํธ๊ฐ ์ค๊ณ๋ฅผ ์ด๋๋ ๊ฒฝํ์ ์กฐ๊ธ ๋ ์์ฐ์ค๋ฝ๊ฒ ํ ์ ์์ ๊ฒ ๊ฐ์์!
๊ทธ๋์ ์ง๊ธ ์ํฉ์์๋ ์ ์ฒด ํ๋ฆ์ ์์ ํ ํ ์คํธํ๊ธฐ๋ ์ด๋ ต๋๋ผ๋, ์ด ๊ฒ์์ด ์งํ๋๊ธฐ ์ํด์๋ ์ด๋ค ๋ฉ์์ง๋ค์ด ์ค๊ฐ์ผ ํ ๊น? ์ ๋๋ฅผ ๋จผ์ ์๊ฐํด๋ณด๊ณ ๊ทธ ๋ฉ์์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ํ ์คํธ๋ฅผ ์์ฑํด๋ณด๋ ์ฐ์ต์ ํด๋ณด์ ๋ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค!
์ด๋ ๊ฒ ์ ๊ทผํ๋ฉด ๊ฐ์ฒด๋ฅผ ๋จผ์ ๋ง๋ค๊ณ ํ ์คํธ๋ฅผ ๋ง์ถ๋ ๋ฐฉ์๋ณด๋ค๋, ํ ์คํธ๋ฅผ ํตํด ์ค๊ณ๋ฅผ ์กฐ๊ธ์ฉ ๋ง๋ค์ด๊ฐ๋ ๊ฒฝํ์ ๋ ํด๋ณด์ค ์ ์์ ๊ฒ ๊ฐ์์~
There was a problem hiding this comment.
์์ธํ ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค!
์ง๊ธ๊น์ง๋ ํ
์คํธ๊ฐ ์ด๋ ค์ฐ๋ฉด ์์ฑ ๋ฐฉ๋ฒ ์์ฒด๋ฅผ ๋จผ์ ๊ณ ๋ฏผํ๋ ๊ฒ ๊ฐ์๋ฐ,
๋ง์ํด์ฃผ์ ๋ด์ฉ์ ๋ณด๊ณ ๋๋ ๊ทธ ์ ์ ์ค๊ณ์ ์ผ๋ก ๋ฌด์์ด ํ
์คํธ๋ฅผ ์ด๋ ต๊ฒ ๋ง๋๋์ง๋ถํฐ
์ดํด๋ณด๋ ๊ฒ์ด ๋จผ์ ๋ผ๋ ์ ์ ๋ฐฐ์ด ๊ฒ ๊ฐ์ต๋๋ค.
ํนํ ์ฑ
์์ด ๊ณผํ ๊ฐ์ฒด, ๋ถ๋ฆฌ๋์ง ์์ ์
์ถ๋ ฅ/์ํ, ๊ฐํ ๊ฒฐํฉ์ ๋จผ์ ์์ฌํด๋ณด๋ผ๋ ๋ถ๋ถ์ด ์ธ์์ ์ด์์ต๋๋ค.
์์ผ๋ก๋ ์ ์ฒด ํ๋ฆ์์ ํ์ํ ๋ฉ์์ง๋ฅผ ๋จผ์ ์๊ฐํ๊ณ ,
๊ทธ ๋ฉ์์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ํ
์คํธ๋ฅผ ์์ฑํ๋ฉด์ ์ค๊ณ๋ฅผ ๋ค๋ฌ๋ ์ฐ์ต์ ํด๋ณด๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค ๐
| private final Hand hand = new Hand(); | ||
| // TODO: ๋ฒ ํ ๊ธฐ๋ฅ ์ถ๊ฐ ์ ๋ฒ ํ ๊ธ์ก ํ๋ ๋๋ ์ผ๊ธ ๊ฐ์ฒด ํ์ | ||
| public class Player extends Participant { | ||
| private final PlayerStatus status; |
There was a problem hiding this comment.
๋ฏธ์ ์๊ตฌ์ฌํญ๊ณผ ๋๋ฉ์ธ ์ค๊ณ ๊ธฐ์ค์ด ์ถฉ๋ํ ๋์ ํ๋จ ๊ธฐ์ค
๋จผ์ ๋ฏธ์
์ ์๊ตฌ์ฌํญ์ ๊ฐ์ด๋์ ๊ฐ๊น์ง ๋ฐ๋์ ์ ๋์ ์ธ ๋ฒ์น์ด๋ผ๊ณ ์๊ฐํ์ง๋ ์์์.
๋ค๋ง ์๊ตฌ์ฌํญ์ ์งํค์ง ์๋ ์ ํ์ ํ๋ค๋ฉด ์ ๊ทธ๋ ๊ฒ ํ๋จํ๋์ง์ ๋ํ ๋ถ๋ช
ํ ์ด์ ๋ ์์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค!
ํ์ ์์๋ ์ฌ์ค ์ด๋ฐ ํํ์ ์๊ตฌ์ฌํญ์ด ๊ฑฐ์ ์๋ ๊ฒฝ์ฐ๋ ๋ง์ต๋๋ค..! ์์คํ ์ ๊ท๋ชจ๊ฐ ํฌ๊ณ ๋ณต์กํ๊ธฐ ๋๋ฌธ์ "ํ๋๋ ๋ช ๊ฐ๊น์ง", "getter๋ ์ฌ์ฉํ์ง ์๋๋ค"์ฒ๋ผ ๊ตฌ์ฒด์ ์ธ ์ ์ฝ์ด ์ฃผ์ด์ง๊ธฐ๋ณด๋ค๋ ๊ฐ ํ์ ์ปจ๋ฒค์ ์ด๋ ์ค๊ณ ๊ธฐ์ค์ ๊ธฐ๋ฐ์ผ๋ก ํ๋จํ๊ฒ ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
๊ทธ๋์ ์ ๋ ๋ฏธ์
์์ ์ ์๋ ๊ท์น๋ค์ ์ค์ ๋๋ฉ์ธ ์ค๊ณ๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํ ๊ท์น์ด๋ผ๊ธฐ๋ณด๋ค๋, ๊ฐ์ฒด์งํฅ ์ค๊ณ๋ฅผ ์ฐ์ตํ๊ธฐ ์ํ ๊ต์ก์ฉ ์ ์ฝ์ ๊ฐ๊น๋ค๊ณ ์๊ฐํฉ๋๋ค.
์๋ฅผ ๋ค์ด "์ธ์คํด์ค ๋ณ์๋ฅผ 3๊ฐ ์ดํ๋ก ์ ํํ๋ค", "์ปฌ๋ ์
์ ํฌ์ฅํ๋ค" ๊ฐ์ ๊ท์น์ ํน์ ์ํฉ์์ ๋ฐ๋์ ์ง์ผ์ผ ํ๋ ์ ๋์ ์ธ ์ค๊ณ ์์น์ด๋ผ๊ธฐ๋ณด๋ค๋, ๊ฐ์ฒด์ ์ฑ
์์ ๋๋๊ณ ์ค๊ณ๋ฅผ ๊ณ ๋ฏผํด๋ณด๊ฒ ๋ง๋ค๊ธฐ ์ํ ์ฅ์น๋ผ๊ณ ์๊ฐํ๊ฑฐ๋ ์!
๋ค๋ง ํ ๊ฐ์ง ๊ธฐ์ค์ผ๋ก ์๊ฐํด๋ณด๋ฉด, ์ด ์ ๋ ๊ท๋ชจ์ ๋ฏธ์
์์ ๊ท์น์ ์งํค์ง ๋ชปํ๋ ๋ถ๋ถ์ด ๋๋ฌด ๋ง์ด ๋ฐ์ํ๋ค๋ฉด ์ค๊ณ๋ฅผ ์์ฌํด๋ด์ผํ ๊ฒ ๊ฐ์์~!
์ด ๊ท์น๋ค์ "์ ์ด๋ ์ด ์ ๋ ๊ท๋ชจ์์๋ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ์ค๊ณํด๋ณผ ์ ์๋ค"๋ ๋ฐฉํฅ์ ์ ์ํด์ฃผ๋ ๊ฒ์ผ๋ก ๋ณด์ฌ์์!
There was a problem hiding this comment.
์ต๋ํ ๊ท์น์ ์งํค๊ธฐ ์ํด ์์ํ๋ฉด์ ๊ฐ๋ฐ์ ์ํ๋ฉด์๋, ํํ์ด ํ์ํ๋ค๋ฉด ๊ทธ ์ด์ ์ ๋ํด ๊น๊ฒ ์๊ฐํด๋ณด๋ ๊ฒ์ด ๋์์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํนํ '๋ฏธ์
์์ ๊ท์น์ ์งํค์ง ๋ชปํ ๋ถ๋ถ์ด ๋ง์ด ๋ฐ์ํ๋ค๋ฉด ์ค๊ณ๋ฅผ ์์ฌํด๋ณด์์ผ ํ๋ค'๋ ๋ง์ด ์๋ฟ์์ต๋๋ค. ๋ธ๋์ญ ๋ฏธ์
์ ๊ท๋ชจ์์๋ ์ด๋ฌํ ๊ท์น๋ค์ ์งํค์ง ๋ชปํ๋ค๋ฉด ์ค๊ณ ๋ฐฉ์์ ๊ฒํ ํ ์ ํธ์ด๊ธฐ๋ ํ ๊ฒ ๊ฐ๋ค์..!
์ ์ฑ์ ์ธ ๋ฆฌ๋ทฐ ๊ฐ์ฌํฉ๋๋ค ๐
| BUST("๋ฒ์คํธ", -1); | ||
|
|
||
| private String name; | ||
| private final String name; |
There was a problem hiding this comment.
์ฌ์ฉ๋์ง ์๋๋ฐ ํ์ํ ๊น์?
There was a problem hiding this comment.
์ด์ ์ฌ์ดํด์ ๊ธฐ๋ฅ์ด์๋๋ฐ ์ด์ ๋ ํ์๊ฐ ์์ด์ ธ์ ์ ๊ฑฐํ๋๊ฒ ๋ง๋ ๊ฒ ๊ฐ์ต๋๋ค..!
There was a problem hiding this comment.
dto์ ํจํค์ง ์์น๊ฐ domain์ ์๋ ์ด์ ๊ฐ ๊ถ๊ธํด์ :)
There was a problem hiding this comment.
DTO๋ฅผ domain ํจํค์ง์ ๋ ๊ฒ์ ํน๋ณํ ์๋๊ฐ ์์๋ ๊ฒ์ ์๋๊ณ ,
DTO์ ์ญํ ์ ๋ํด ๋ช
ํํ๊ฒ ์ดํดํ์ง ๋ชปํ ์ํ์์ ์์น๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ฆฌ๋ทฐ๋ฅผ ๋ณด๊ณ DTO์ ์ญํ ์ ๋ํด ๋ค์ ์๊ฐํด๋ณด๋,
DTO๋ ๊ณ์ธต ๊ฐ ๋ฐ์ดํฐ ์ ๋ฌ์ ์ํ ๊ฐ์ฒด์ ๊ฐ๊น๊ธฐ ๋๋ฌธ์
domain ๋ณด๋ค๋ ๋ณ๋์ dto ํจํค์ง๋ ์์ ๊ณ์ธต์ ๋๋ ๊ฒ์ด ๋ ์ ์ ํ ๊ฒ ๊ฐ์ต๋๋ค.
๋ง์ํด์ฃผ์ ๋ด์ฉ์ ๋ฐ์ํด ํจํค์ง ๊ตฌ์กฐ๋ฅผ ๋ค์ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
| @@ -53,4 +57,10 @@ private static Result calculateResult(Player player, Dealer dealer) { | |||
|
|
|||
| return Result.DRAW; | |||
There was a problem hiding this comment.
if๋ฌธ์ ์ค์ผ ๋ฐฉ๋ฒ์ด ๋ ์์๊น์! enum์ ์ ํ์ฉํด๋ณด๋ฉด ์ด๋์?
There was a problem hiding this comment.
๋ฆฌ๋ทฐ๋ฅผ ๋ฐ๊ณ if๋ฌธ์ ์ค์ด๋ ๋ฐฉ๋ฒ์ผ๋ก Predicate enum ๋ฐฉ์์ ๊ฒํ ํด๋ดค์ต๋๋ค.
๋ค๋ง ํด๋น ๋ฐฉ์์ ์กฐ๊ฑด๊ณผ ํ์ ํ๋ฆ์ด ๋ถ๋ฆฌ๋์ด ๋ธ๋์ญ ๋ฃฐ์ ํ๋์ ํ์ ํ๊ธฐ ์ด๋ ค์์ง๊ณ , ์ฝ๊ธฐ์ ๋จ์ํ ์กฐ๊ฑด 5๊ฐ๋ฅผ ์ค์ด๋ ค๋ค ๋ณต์ก๋๊ฐ ์ฌ๋ผ๊ฐ๋๊ฒ ์๋๊น ํ๋ ์๊ฐ์ด ๋ค์์ต๋๋ค. ํ์ฌ์ ์กฐ๊ฑด๋ฌธ ์์๋ ๋ธ๋์ญ2์ ๊ท์น์ ๊ฐ์ฅ ์ง๊ด์ ์ผ๋ก ๋ณด์ฌ์ฃผ๊ณ ์๋ค๊ณ ์๊ฐํ๊ฑฐ๋ ์..
๊ทธ๋์ if๋ฌธ์ ์ ์งํ๋, ํ์ ์ฑ ์์ Result.from(player, dealer) ํํ๋ก ์ฎ๊ฒจ Result๊ฐ ์ค์ค๋ก ์์ ์ ๊ฐ์ ๊ฒฐ์ ํ๋๋ก ๋ฆฌํฉํ ๋งํ๋ ๋ฐฉํฅ์ ์ด๋ป๊ฒ ์๊ฐํ์๋์?
|
|
||
| --- | ||
|
|
||
| # ์ฌ์ดํด2 ๊ธฐ๋ฅ ๊ตฌํ |
There was a problem hiding this comment.
์ด๋ฒ ์ฌ์ดํด์ ๋ฏธ์ ์ค ๊ธฐ๋ก์ด ์์๋๊ฑฐ ๊ฐ์๋ฐ README๋ PR์๋ ๋ฐ๋ก ์์ ์ด์ฃผ์๋์?!
๊ธฐ๋ฅ ์ถ๊ฐ๋ก ์ธํด ์์ ํ ์์น ๊ฐ์
์ฌ์ดํด1 ๋๋ณด๋ค ์์ ๋ฒ์๊ฐ ์ค์๋๊ฐ/๋์๋๊ฐ
๊ท์น ์ ์ฉ์ผ๋ก ๋ณ๊ฒฝํ ์ฝ๋ 1๊ณณ
ํ ์คํธ๊ฐ ์ค๊ณ๋ฅผ ๋์ด ์๊ฐ 1ํ
There was a problem hiding this comment.
๊ธฐ๋ก์ ํด๋์๋๋ฐ PR์์ ์ง๋ฌธ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ ๋ฏผํ๋ค๊ฐ ์ ๋ ๊ฒ์ ๋์ณค์ต๋๋ค ๐ฅฒ
README์ ์
๋ฐ์ดํธํ์ฌ ์ปค๋ฐํด๋๊ฒ ์ต๋๋ค..!
| private int initialHandSize; | ||
| private List<String> hand; | ||
| private final String playerName; | ||
| private final int initialHandSize; |
There was a problem hiding this comment.
์๊ธฐ ์ด์ฐจํผ 2๋ง ๋ค์ด๊ฐ๋๋ฐ ๊ตณ์ด ์ํ๋ก ๊ฐ์ ธ์ผํ๋์ง ๋ชจ๋ฅด๊ฒ ์ด์!
There was a problem hiding this comment.
์ฒ์ ์ค๊ณ๋ฅผ ํ ๋์๋ ํ์ฅ ๊ฐ๋ฅ์ฑ์ ๊ณ ๋ คํด์ ์ด๊ธฐ ํธ๋์ ํฌ๊ธฐ๊ฐ ๋ฐ๋์์ ๋ ๋์ฒํ ์ ์๋๋ก ์ํ๋ก ๋ค๋ฃจ๊ณ ์ ํ์ฌ ๋์ ํ์์ต๋๋ค. ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ๊ณ ์ฝ๋๋ฅผ ๋์๋ณด๋ DTO ๋ณ์๋ก ๋ง๋ ๋ค๋ ๊ฒ์ ์์ฑ ์ฑ ์๋ ์๊ธฐ๊ณ , ์ฝ๋๋ฅผ ๋ณด๋ ์ ์ฅ์์ ์๋ฌธ์ด ์๊ธธ ๋งํ ์ฝ๋ ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๋จ๊ฒจ์ฃผ์ ๋ฆฌ๋ทฐ๋ฅผ ์ฝ๊ณ ํ์ฅ์ฑ์ ๋ํ ํ๋จ์ ์ด๋ป๊ฒ ํด์ผํ ์ง ์ฐพ์๋ณด๋ค๊ฐ YAGNI์ ๋ํ ๋ด์ฉ์ ์ ํ๊ฒ ๋์๋๋ฐ, ํญ์ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์ '์ด๋ ๊ฒ ํ์ฅ๋๋ค๋ฉด ์ด๋กํ์ง?'๋ผ๋ ์๊ฐ์ผ๋ก ๋น์ฅ ์ธ ํ์๊ฐ ์๋ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ๋์ ํ ์ ์ด ๋ง์ ๊ฒ ๊ฐ์ต๋๋ค.
์ฐ์ ํด๋น ํ๋๋ฅผ ์ ๊ฑฐํ๊ณ , ์์ผ๋ก๋ 'ํ์ฅํ๊ธฐ ์ฌ์ด ์ฝ๋'์ 'ํ์ฅ์ ๋๋นํด์ ํ์์๋ ์ฝ๋๋ฅผ ๋ฏธ๋ฆฌ ์จ๋๋ ๊ฒ'์ ์ ๊ตฌ๋ถํด์ ๊ฐ๋ฐ์ ํด์ผํ ๊ฒ ๊ฐ์ต๋๋ค

์ฒดํฌ ๋ฆฌ์คํธ
test๋ฅผ ์คํํ์ ๋, ๋ชจ๋ ํ ์คํธ๊ฐ ์ ์์ ์ผ๋ก ํต๊ณผํ๋์?์ด๋ค ๋ถ๋ถ์ ์ง์คํ์ฌ ๋ฆฌ๋ทฐํด์ผ ํ ๊น์?
๋ธ๋์ญ2 PR ๋ฆฌ๋ทฐ ์์ฒญ
๋ฆฌ๋ทฐ ์์ฒญ
์ด๋ฒ ๋ฏธ์ ์์๋ ํนํ ์ค๊ณ๋ฅผ ๊ฒฐ์ ํ๋ ๊ณผ์ ์์ ์ด๋ค ๊ธฐ์ค์ผ๋ก ํ๋จํ๋ฉด ์ข์์ง์ ๋ํ ์กฐ์ธ์ ์ป๊ณ ์ถ์ต๋๋ค.
1. Controller ๋์ ์ ๋ํ ๊ณ ๋ฏผ
์ด๋ฒ ๋ฏธ์ ์ ๊ตฌํํ๋ฉด์ ๊ฐ์ฅ ๊ณ ๋ฏผํ๋ ๋ถ๋ถ ์ค ํ๋๋ Controller๋ฅผ ๋์ ํ๋ ๊ฒ์ด ๋ง๋๊ฐ์์ต๋๋ค.
ํฌ๋ฃจ๋ค๊ณผ ํ ๋ก ์ ์งํํ๋ ์ค, ์ง๋๊ฐ๋ ์ฝ์น๋์ด '์ปจํธ๋กค๋ฌ๋ฅผ ์ ์ฌ์ฉํด์?' ๋ผ๋ ์ง๋ฌธ์ ๋์ง๊ณ ๊ฐ์ จ๋๋ฐ, ์ด๋ฒ ๋ฏธ์ ์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ ์ฉํ๋ ๊ฒ์ด ์ณ์๋์ง์ ๋ํ ๊ณ ๋ฏผ์ ํ๊ฒ ๋์์ต๋๋ค.
์ ๊ฐ ์ดํดํ Controller์ ์ญํ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ๋ ๊ฒ์์ ์ ์ฒด ํ๋ฆ์ ๋ด๋นํ๋ ๊ฐ์ฒด๊ฐ ํ์ํ๋ค๊ณ ์๊ฐํ๊ณ , ๊ทธ ์ญํ ์ Controller๊ฐ ๋งก๋ ๊ฒ์ด ์์ฐ์ค๋ฝ๋ค๊ณ ํ๋จํ์ต๋๋ค.
๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ ํ๋ฆ์ Controller์์ ๋ด๋นํ๋๋ก ๊ตฌํํ์ต๋๋ค.
ํ์ง๋ง ํฌ๋ฃจ๋ค๊ณผ ๋ฆฌ๋ทฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ณผ์ ์์ ์ด๋ฐ ์๊ฐ๋ ๋ค์์ต๋๋ค.
๊ทธ๋์ PR์ ์์ฑํ๋ ์๊ฐ์๋ Controller๊ฐ ํ๋ฆ์ ๊ด๋ฆฌํ๋ ๊ตฌ์กฐ๊ฐ ๊ผญ ํ์ํ์๊น? ์ ๋ํด์๋ ๋ถ์ ์ ์ธ ์๊ฐ์ด ๋ญ๋๋ค.
์ง๋ฌธ
์ฃผ๋๊ฐ ์๊ฐํ์๋
์ ๋ํ ์๊ฒฌ์ ๋ฃ๊ณ ์ถ์ต๋๋ค.
2. ์ค๊ณ ๊ฒฐ์ ์ ๋ด๋ฆด ๋์ ๊ธฐ์ค์ ๋ํ ๊ณ ๋ฏผ
์ด๋ฒ ๋ฏธ์ ์ ์งํํ๋ฉด์ ์ค๊ณ๋ฅผ ๊ฒฐ์ ํด์ผ ํ๋ ์๊ฐ๋ค์ด ์ฌ๋ฌ ๋ฒ ์์์ต๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ๊ณ ๋ฏผ๋ค์ด ์์์ต๋๋ค.
์ด๋ฐ ๊ณ ๋ฏผ๋ค์ ํ ๋๋ง๋ค ์ค์ค๋ก ๋๋ฆ์ ๊ธฐ์ค์ ์ธ์ ๊ฒฐ์ ์ ๋ด๋ ธ์ง๋ง
๊ทธ ๊ธฐ์ค์ด ๊ฐ์ฒด์งํฅ ์ค๊ณ ๊ด์ ์์ ์ ์ ํ ๊ธฐ์ค์ด์๋์ง ํ์ ์ด ์์ง๋ ์์ง ์์ต๋๋ค.
๊ทธ๋์ ์ฃผ๋์๊ฒ ๋ค์๊ณผ ๊ฐ์ ๋ถ๋ถ์ ์ง๋ฌธํ๊ณ ์ถ์ต๋๋ค.
์ง๋ฌธ
๋๋ฉ์ธ ์ค๊ณ๋ฅผ ํ ๋
์ ๋ํด ์กฐ์ธ์ ๋ฃ๊ณ ์ถ์ต๋๋ค.
3. ํ ์คํธ์ ์ค๊ณ์ ๊ด๊ณ์ ๋ํ ๊ณ ๋ฏผ
์ด๋ฒ ๋ฏธ์ ์์ ํ ์คํธ๋ฅผ ์์ฑํ๋ฉด์ ๋๋ ์ ์
ํ ์คํธ๊ฐ ์ค๊ณ๋ฅผ ์ด๋๋ค๋ ๊ฐ๊ฐ์ด ์์ง ์ต์ํ์ง ์๋ค๋ ๊ฒ์ด์์ต๋๋ค.
ํ์ฌ ์ ๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ํ ์คํธ๋ฅผ ์์ฑํ๊ณ ์์ต๋๋ค.
์ฒ์์๋ TDD๋ฅผ ์๋ํด๋ณผ๊น ํ๋ ์๊ฐ์ ํ ์คํธ ์ฝ๋๋ฅผ ๋จผ์ ์จ๋ณด๊ณ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ์ก์๊ฐ๋ ค๋ ์๋๋ ํด๋ณด์์ง๋ง ๋์ ํ ๊ธฐ๋ฅ์ ์ด๋ป๊ฒ ๊ตฌํํ ์ง ๊ตฌ์กฐ๊ฐ ๊ทธ๋ ค์ง์ง ์์ ๊ฒฐ๊ตญ ์ค๊ฐ ๋ถํฐ ํด๋์ค ๊ตฌ์กฐ๋ฅผ ๋จผ์ ๊ตฌ์ํด๋๊ณ ๋ง์ถฐ์ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ผ๋ก ๋์๊ฐ ๊ฒ ๊ฐ์ต๋๋ค.
ํ์ง๋ง ํ ์คํธ๋ฅผ ์์ฑํ๋ฉด์๋
ํ๋จ์ด ์ ๋์ง ์์ต๋๋ค. ์ด๋ ์ด๋ฒ ๋ธ๋์ญ ๋ฏธ์ ์ด ๋์ ธ์ค ํต์ฌ ์ง๋ฌธ์ด๊ธฐ๋ ํ๋๋ฐ ๋ฏธ์ ๋ง๋ฌด๋ฆฌ ๋จ๊ณ์ ๋ค์ด์๋ ์์ง ํ์ ์ด ์์ต๋๋ค.
์ง๋ฌธ
์ ๋ํด ์กฐ์ธ์ ๋ฃ๊ณ ์ถ์ต๋๋ค.
4. ๋ฏธ์ ์๊ตฌ์ฌํญ๊ณผ ๋๋ฉ์ธ ์ค๊ณ ๊ธฐ์ค์ด ์ถฉ๋ํ ๋์ ํ๋จ ๊ธฐ์ค
์ด์ ๋ถํฐ ๋ฏธ์ ์ ์งํํ๋ฉด์ ์ด์ด์ ธ์จ ๊ณ ๋ฏผ์ ๋๋ค.
์ฐํ ์ฝ ๋ฏธ์ ์๋ ๊ฐ์ฒด์งํฅ ์ํ์ฒด์กฐ ๊ท์น๊ณผ ๊ฐ์ ์ฌ๋ฌ ์ ์ฝ๋ค์ด ์กด์ฌํ๋ฉฐ,
์ด๋ฒ ๋ฏธ์ ์์๋ ๋ค์๊ณผ ๊ฐ์ ์ ์ฝ์ด ์์์ต๋๋ค.
์ด ๊ท์น๋ค์ ๊ฐ์ฒด์งํฅ ์ค๊ณ๋ฅผ ํ์ตํ๊ธฐ ์ํ ์ข์ ๊ฐ์ด๋๋ผ๊ณ ์๊ฐํฉ๋๋ค.
ํ์ง๋ง ๊ตฌํ ๊ณผ์ ์์ ํ ๊ฐ์ง ๊ณ ๋ฏผ์ด ์๊ฒผ์ต๋๋ค.
์๋ฅผ ๋ค์ด Player ๊ฐ์ฒด๋ ๋ค์๊ณผ ๊ฐ์ ์ํ๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ๊ฐ์ง๊ฒ ๋์์ต๋๋ค.
์ด ๊ฒฝ์ฐ ํ๋ ์๊ฐ 3๊ฐ๊ฐ ๋ฉ๋๋ค.
์ด ์ํฉ์์ ๋ ๊ฐ์ง ์ ํ์ง๊ฐ ์๋ค๊ณ ๋๊ผ์ต๋๋ค.
์ ๋ ์ด๋ฒ ๊ตฌํ์์๋ ๋๋ฉ์ธ ๋ชจ๋ธ ๊ด์ ์์ ๋ ์์ฐ์ค๋ฝ๋ค๊ณ ์๊ฐ๋๋ ์ค๊ณ๋ฅผ ์ ์งํ๋ ๋ฐฉ์์ ์ ํํ์ต๋๋ค.
๊ทธ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ค๋ง ์ด ํ๋จ์ด ์ ์ ํ ์ ํ์ด์๋์ง๋ ์ค์ค๋ก ํ์ ์ด ์์ง ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๊ท์น์ ๊นจ๊ณ ๋ด ์ค๊ณ ํ๋จ์ผ๋ก ๊ฒฐ์ ํ๊ธฐ๊น์ง ๊ณ ๋ฏผํ๋ ๋ฐ์๋ ๋ง์ ์๊ฐ์ ์๋นํ์ต๋๋ค.
์ง๋ฌธ
์ด๋ฐ ์ํฉ์ฒ๋ผ
๊ฐ ์๋ก ์ถฉ๋ํ ๋
์ฃผ๋๋ ์ด๋ค ๊ธฐ์ค์ ๋ ์ฐ์ ์ ์ผ๋ก ๊ณ ๋ คํ์๋์ง ๊ถ๊ธํฉ๋๋ค.
์ด๋ฐ ๊ท์น๋ค์ด ๋๋ฉ์ธ ์ค๊ณ ์์น์ ๋ฐ์ํ ๊ท์น์ธ์ง, ๊ฐ์ฒด์งํฅ ์ค๊ณ๋ฅผ ํ์ตํ๊ธฐ ์ํ ๊ต์ก์ฉ ์ ์ฝ์ธ์ง
๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ ๊ฐ์ง๊ฐ ์ถฉ๋ํ๋ ์ํฉ์์๋ ์ด๋ค ๋ฐฉ์์ผ๋ก ํ๋จํ๋ฉด ์ข์์ง์ ๋ํ ์กฐ์ธ์ ๋ฃ๊ณ ์ถ์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก
์ด๋ฒ ๋ฏธ์ ์์๋ ํนํ ๋ค์ ์ง๋ฌธ๋ค์ ์ค์ค๋ก ๊ณ์ ๊ณ ๋ฏผํ๋ฉฐ ๊ตฌํํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํน์ ์ ๊ฐ ๋์น๊ณ ์๋ ์ค๊ณ ๊ด์ ์ด๋
๋ ๊ณ ๋ฏผํด๋ณด๋ฉด ์ข์ ๋ถ๋ถ์ด ์๋ค๋ฉด ์ด๋ค ํผ๋๋ฐฑ์ด๋ ๊ฐ์ฌํ ๋ฐฐ์ฐ๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.