Skip to content

[๐Ÿš€ ์‚ฌ์ดํด2 - ๋ฏธ์…˜ (๋ธ”๋ž™์žญ ๊ฒŒ์ž„ ์‹คํ–‰)] ํ…Œ๋ฆฌ ๋ฏธ์…˜ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค.#1128

Open
Yeji-Kim-Erica wants to merge 20 commits intowoowacourse:yeji-kim-ericafrom
Yeji-Kim-Erica:step2

Conversation

@Yeji-Kim-Erica
Copy link

@Yeji-Kim-Erica Yeji-Kim-Erica commented Mar 14, 2026

๐Ÿ’Œ ์ธ์‚ฌ๋ง

์•ˆ๋…•ํ•˜์„ธ์š”, PK! ๋ฆฌ๋ทฐ์ด ํ…Œ๋ฆฌ์ž…๋‹ˆ๋‹ค.

์šฐ์„  ์ง€๋‚œ PR ๋•Œ์˜ ์ƒ์„ธํ•œ ์ฝ”๋ฉ˜ํŠธ๋“ค์— ๋Œ€ํ•ด ๊ฐ์‚ฌ๋“œ๋ฆฐ๋‹ค๋Š” ๋ง์”€์„ ๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค!

์ง€๋‚œ ์‚ฌ์ดํด์—์„œ ์ฃผ์…จ๋˜ ํ”ผ๋“œ๋ฐฑ๊ณผ ๋„์ „ ๋ชฉํ‘œ๊ฐ€ ๋งŽ์€ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

1. ์ตœ๋Œ€ํ•œ ์ ์€ ๋ฒ”์œ„์˜ ์ฝ”๋“œ ๋ณ€๊ฒฝ์„ ํ†ตํ•ด ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ํ•ด๋ณด๊ธฐ
2. ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ๋†’์ด๊ธฐ

์šฐ์„  ์ œ๊ฐ€ ์ƒ๊ฐํ•˜๊ธฐ์— ๋งŽ์ด ๋ฐœ์ „ํ•œ ๋ถ€๋ถ„๋ถ€ํ„ฐ ๋ง์”€์„ ๋“œ๋ ค๋ณผ๊นŒ ํ•ด์š”.
2๋ฒˆ ํ•ญ๋ชฉ์„ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ž˜ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์„์ง€ ๊ณ ๋ฏผํ•ด๋ดค๋Š”๋ฐ,
README์˜ ๊ธฐ๋Šฅ ๋ชฉ๋ก ๋ฌธ์„œ๋ฅผ ๊ผผ๊ผผํžˆ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์šฐ์„ ์ ์œผ๋กœ ํ–‰ํ•ด์ ธ์•ผ ํ•œ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
์ฒซ๋ฒˆ์งธ PR ๋‹น์‹œ, ํด๋ž˜์Šค ๊ตฌ์กฐ ์œ„์ฃผ์˜ ๊ธฐ๋Šฅ ๋ชฉ๋ก์„ base๋กœ ์ž‘์„ฑ์„ ์‹œ์ž‘ํ–ˆ๋”๋‹ˆ
ํด๋ž˜์Šค์˜ ๊ตฌ์กฐ๊ฐ€ ๊ณ„์†ํ•ด์„œ ๋ณ€๊ฒฝ๋˜๋ฉด์„œ ๋ชฉ๋ก ๊ด€๋ฆฌ๊ฐ€ ๋˜์ง€ ์•Š์•˜๊ณ ,
์ด๋กœ ์ธํ•ด ์—ฃ์ง€ ์ผ€์ด์Šค ์ปค๋ฒ„๋Š” ์ปค๋…• ๊ธฐ๋Šฅ์ด ์ œ๋Œ€๋กœ ๊ตฌํ˜„๋˜๊ณ  ์žˆ๋Š” ๊ฑด์ง€๋„ ํŒŒ์•…ํ•˜๊ธฐ ํž˜๋“ค์—ˆ๋˜ ๊ฒฝํ—˜์ด ์žˆ๋Š”๋ฐ์š”.
์‚ฌ์ „์— ๋ชฉ๋ก์„ ์ƒ์„ธํžˆ ์ž‘์„ฑํ•˜๋‹ˆ, ์—ฃ์ง€ ์ผ€์ด์Šค๋ฅผ ์ƒ์ƒํ•ด๋ณด๋Š” ๊ณผ์ •์„ ํ†ตํ•ด์„œ ์„œ๋น„์Šค์— ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๊ตฌ์ƒํ•˜๊ธฐ ์‰ฌ์›Œ์กŒ์Šต๋‹ˆ๋‹ค.
์„ค๊ณ„ ๋ถ€๋ถ„์— ์žˆ์–ด์„œ ๊ฐ€์žฅ ๊นŠ์ด ์™€๋‹ฟ์•˜๋˜ ๊ฒƒ์€,
์ง€๋‚œ ์‚ฌ์ดํด ๋•Œ ์•Œ๋ ค์ฃผ์‹  "์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ์™€ ๋„๋ฉ”์ธ ๊ทœ์น™์˜ ๊ฒ€์ฆ์ด ๊ตฌ๋ถ„๋˜์–ด์•ผ ํ•œ๋‹ค"๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.
๊ธฐ๋Šฅ ๋ชฉ๋ก์— ์ด๋ฅผ ๋ฐ˜์˜ํ•ด ์ˆ˜์ •ํ•˜๋Š” ๊ณผ์ •์—์„œ ๊ฐ ๊ฐ์ฒด์˜ ์ฑ…์ž„์ด ๋ฌด์—‡์ธ์ง€๋ฅผ ๋”์šฑ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ณ ๋ฏผํ•ด๋ณผ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
ํ…Œ์ŠคํŠธ ํ•ด๋ด์•ผ ํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋“ค์„ ๋ฏธ๋ฆฌ ์ •๋ฆฌํ•ด๋‘๊ณ  ๊ตฌํ˜„์„ ์‹œ์ž‘ํ•˜๋‹ˆ ํ™•์‹คํžˆ TDD์˜ ์˜์˜๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋А๋‚„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๋Š” ๊ณผ์ •์—์„œ ์•„๋ฌด๋ฆฌ ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด๋„,
ํ•ด๋‹น ๋„๋ฉ”์ธ์˜ ๊ฒ€์ฆ ํ…Œ์ŠคํŠธ ๋•๋ถ„์— ์•ˆ์‹ฌํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒฝํ—˜์ด ์ธ์ƒ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

(+ ์‹ค์ œ๋กœ '๋”œ๋Ÿฌ์˜ ์ ์ˆ˜๊ฐ€ 16์  ์ดํ•˜์ธ ์ƒํƒœ๋กœ ๊ฒŒ์ž„์ด ์ข…๋ฃŒ๋˜๋ฉด ์•ˆ๋œ๋‹ค.'๋Š” ์—ฃ์ง€ ์ผ€์ด์Šค๋ฅผ ๊ธฐ๋Šฅ ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•˜๊ณ , ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์™€ ์˜ˆ์™ธ ๋ฐœ์ƒ ๋กœ์ง์„ ์ž‘์„ฑํ–ˆ๋Š”๋ฐ, ๋•๋ถ„์— ๋‚˜์ค‘์— ์ฝ”๋“œ๊ฐ€ ๊ผฌ์ด๋ฉด์„œ ๋”œ๋Ÿฌ๊ฐ€ 16์ ์—์„œ ํ•œ์žฅ ์™ธ์—๋Š” ๋” ๋ฐ›์•„์˜ค์ง€ ์•Š๋Š” ์ปจํŠธ๋กค๋Ÿฌ ํ๋ฆ„ ์˜ค๋ฅ˜๋„ ์žก์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค!! ์ค‘์š”์„ฑ์„ ์ฒด๊ฐํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ์ˆœ๊ฐ„์ž…๋‹ˆ๋‹ค!)

์ œ๊ฐ€ ์กฐ๊ธˆ ์•„์‰ฝ๊ฒŒ ์ˆ˜ํ–‰ํ–ˆ๋‹ค๊ณ  ๋А๋ผ๋Š” ๋ถ€๋ถ„์€ 1๋ฒˆ ํ•ญ๋ชฉ์ธ๋ฐ์š”.
์ œ์‹œํ•ด์ฃผ์…จ๋˜ '์ตœ๋Œ€ํ•œ ์ ์€ ๋ฒ”์œ„์˜ ์ฝ”๋“œ ๋ณ€๊ฒฝ'์„ ์ œ๊ฐ€ ์ž˜ ์ˆ˜ํ–‰ํ•œ ๊ฒƒ์ธ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.
์ œ๊ฐ€ ํ•ด๋‹น ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ์•„์ง ๋ถ€์กฑํ•œ ๊ฒƒ ๊ฐ™๊ธฐ๋„ ํ•˜๋„ค์š”.
์ด๋ฒˆ ์‚ฌ์ดํด์—์„œ ์‚ฌ์šฉ์ž๋งˆ๋‹ค ์ด๋ฆ„์„ ์ž…๋ ฅ ๋ฐ›์€ ๋’ค ๋ฐฐํŒ… ๊ธˆ์•ก์„ ์ž…๋ ฅ ๋ฐ›๋Š”๋‹ค๋Š” ๋‚ด์šฉ์ด ์ถ”๊ฐ€๋˜๋ฉด์„œ,
Controller์—์„œ ๊ฒ€์ฆ ํ๋ฆ„์„ ๋Œ๋ฆฌ๊ณ  Player, Players๊ฐ€ ๋ฐ›์•„์˜ค๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ์ธ์ž๊ฐ€ ๋งŽ์ด ๋ณ€ํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ
๊ธฐ๋Šฅ ์ถ”๊ฐ€๋กœ ์ธํ•ด ์–ด์ฉ” ์ˆ˜ ์—†์ด ๋ณ€๊ฒฝ๋œ '๋ฐฐํŒ… ๊ธˆ์•ก' ๋ถ€๋ถ„์„ ์ œ์™ธํ•˜๋”๋ผ๋„,
๊ธฐ์กด์— String์œผ๋กœ ๋ฐ›์•„์˜ค๋˜ ์ด๋ฆ„ ๋ถ€๋ถ„์„ ๊ฐ์ฒด๋กœ ๋ฐ›์•„์˜ค๋„๋ก ํ–ˆ์œผ๋‹ˆ..
ํ•ด๋‹น ๋„์ „์˜ ๊ธฐ์ค€์— ๋งž๋Š” ์ ์ ˆํ•œ ๋ฒ”์œ„์—์„œ์˜ ์ˆ˜์ •์ด ๋งž๋Š”์ง€ ํ™•์‹ ์ด ๊ฐ€์งˆ ์•Š์Šต๋‹ˆ๋‹ค. (์•„๋งˆ ์ด ์™ธ์—๋„ ์ˆ˜์ •ํ•œ ์‚ฌํ•ญ์ด ์žˆ์„ ๊ฑฐ ๊ฐ™๊ธฐ๋„ ํ•˜๊ณ ์š”..)
ํ•˜์ง€๋งŒ, ์ด์ „ ์‚ฌ์ดํด์˜ ๋ฆฌํŒฉํ† ๋ง ๋•Œ๋งŒํผ์˜ ๋Œ€๊ฒฉ๋ณ€์ด ์—†์—ˆ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•œ๋‹ค๋ฉด,
์ด์ „์— ๋น„ํ•ด์„œ๋Š” ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋Š” ๋ฒ”์œ„์™€ ๊ทœ๋ชจ๊ฐ€ ๊ต‰์žฅํžˆ ์ถ•์†Œ๋˜์—ˆ๋‹ค๊ณ  ๋А๋‚๋‹ˆ๋‹ค!

์šฐ์„ ์€ ์ œ ์„ ์—์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค์„ ์ตœ๋Œ€ํ•œ ํ•ด๋ณด์•˜๋Š”๋ฐ,
์ง€๊ธˆ ์ €์˜ ์‹œ์•ผ๋กœ๋Š” ๋ณผ ์ˆ˜ ์—†์—ˆ๋˜ ๋ถ€๋ถ„๋“ค์„ ๋˜ ํ•œ๋ฒˆ ์‚ดํŽด๋ด ์ฃผ์‹œ๊ณ  ์งš์–ด์ฃผ์‹œ๊ธธ ๋ถ€ํƒ ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
๋‹ค์‹œ ํ•œ๋ฒˆ ์ตœ์„ ์„ ๋‹คํ•ด ๊ฐœ์„ ํ•˜๊ณ  ๊ณต๋ถ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ™‡โ€โ™‚๏ธ

์• ์ •์ด ๋‹ด๊ธด ๋ฆฌ๋ทฐ ์ •๋ง ๊ฐ์‚ฌ๋“œ๋ฆฌ๊ณ , ์ด๋ฒˆ ๋ฆฌ๋ทฐ๋„ ์ž˜ ๋ถ€ํƒ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค!!

์ฒดํฌ ๋ฆฌ์ŠคํŠธ

  • ๋ฏธ์…˜์˜ ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ชจ๋‘ ๊ตฌํ˜„ํ–ˆ๋‚˜์š”?
  • Gradle test๋ฅผ ์‹คํ–‰ํ–ˆ์„ ๋•Œ, ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ํ†ต๊ณผํ–ˆ๋‚˜์š”?
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๋‚˜์š”?

์–ด๋–ค ๋ถ€๋ถ„์— ์ง‘์ค‘ํ•˜์—ฌ ๋ฆฌ๋ทฐํ•ด์•ผ ํ• ๊นŒ์š”?

๊ณ ๋ฏผํ–ˆ๋˜ ๋ถ€๋ถ„

  • ์ปจํŠธ๋กค๋Ÿฌ์— ๋„๋ฉ”์ธ์€ ์–ด๋А ์ •๋„๊นŒ์ง€ ๋…ธ์ถœ๋˜์–ด๋„ ๋˜๋Š” ๊ฑธ๊นŒ์š”?

๊ฒŒ์ž„์˜ ์ดˆ๊ธฐ ์„ค์ • ๋ถ€๋ถ„ ํ๋ฆ„์ด ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋กœ ์ธํ•ด ๋งŽ์ด ๋ณ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด์— ๋งž์ถฐ์„œ ๊ฝค๋‚˜ ๋งŽ์€ ๋„๋ฉ”์ธ์ด ํ˜„์žฌ Controller์— ๋…ธ์ถœ๋˜๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์ธ๋ฐ์š”.
์ด๋ ‡๊ฒŒ ์‚ฐ๋ฐœ์ ์œผ๋กœ ๋ถ„ํฌํ•ด์žˆ๋Š” ํ˜•์ƒ์ด ์ •์ƒ์ ์ธ ํ˜„์ƒ์ด๋ผ๊ณ  ๋ณด์•„๋„ ๊ดœ์ฐฎ์€์ง€ ์—ฌ์ญค๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

  • ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๊ฒ€์ฆ ํ๋ฆ„์ด ๊ฒฐ์ •๋˜๊ณ , ๊ฒ€์ฆ ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜์–ด๋„ ๊ดœ์ฐฎ์€ ๊ฑด๊ฐ€์š”?

ํ˜„์žฌ Controller์—์„œ Players ์˜ validatePlayersCount ์ •์  ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ €๋Š” ์ด๊ฒƒ์ด ๊ฐ์ฒด์ง€ํ–ฅ์ ์ด ์•„๋‹ˆ๋ผ ์ ˆ์ฐจ์ง€ํ–ฅ์ ์ธ ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋œ ๊ฒƒ์ด๋ผ๋Š” ๋А๋‚Œ์ด ๋“œ๋Š”๋ฐ์š”.
(๋ธ”๋ž™์žญ ์ž์ฒด๊ฐ€ ์ˆœ์ฐจ์  ํ๋ฆ„์„ ๊ฐ€์ง„ ํ”„๋กœ๊ทธ๋žจ์ด๊ณ , Controller์˜ ์ฝ”๋“œ์ด๋‹ˆ ์–ด์ฉ” ์ˆ˜ ์—†๋Š” ๊ฑด๊ฐ€, ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ค๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.)
ํ˜„์žฌ์˜ ํ๋ฆ„์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ณ ๋ฏผํ•ด๋ด์•ผ ํ• ์ง€, ์•„๋‹ˆ๋ฉด ์ด๋Ÿฐ ํ˜„์ƒ์ด ์ž์—ฐ์Šค๋Ÿฌ์šด ๊ฒƒ์ธ์ง€ ์—ฌ์ญค๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
๋˜, ํ•ด๋‹น ํ๋ฆ„์œผ๋กœ ์ธํ•ด ํ˜„์žฌ Player ์ตœ๋Œ€ ์ธ์›์ˆ˜๊ฐ€ Controller์—์„œ ํ•œ๋ฒˆ, Players ๊ฐ์ฒด ์ƒ์„ฑ ์‹œ์— ํ•œ๋ฒˆ.
์ด๋ ‡๊ฒŒ ๋‘๋ฒˆ ๊ฒ€์ฆ์ด ๋˜๊ณ  ์žˆ๋Š”๋ฐ, ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋ฐฉ๋ฒ•์ด ๋„์ €ํžˆ ๋– ์˜ค๋ฅด์งˆ ์•Š์•„์„œ.. ์ข‹์€ ํžŒํŠธ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ถ€ํƒ๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค!

  • Game ํด๋ž˜์Šค ์—์„œ ํ˜„์žฌ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ 3๊ฐœ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‹œ๋„ํ•ด๋ณด๋ฉด ์ข‹์„ ๋ฐฉํ–ฅ์ด ๋ฌด์—‡์ผ๊นŒ์š”?

์ฒ˜์Œ์—๋Š” List<Participant> ๋กœ Dealer์™€ Players ํ•„๋“œ๋ฅผ ํ†ตํ•ฉํ•ด๋ณด๋ ค ํ–ˆ์œผ๋‚˜,
๋‘˜์˜ ์„ฑ๊ฒฉ์ด ๋‹ค๋ฅธ ๋ถ€๋ถ„์ด ๊ฝค ์กด์žฌํ•ด์„œ ๊ตฌ๋ถ„์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ๋А๊ผˆ์Šต๋‹ˆ๋‹ค.
ํ˜„์žฌ Deck, Dealer, Players๋กœ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ 3๊ฐœ ๊ฐ€์ง„ Game ๊ตฌ์กฐ ์™ธ์—๋Š” ๋– ์˜ค๋ฅด์ง€ ์•Š๋Š”๋ฐ,
'3๊ฐœ ์ด์ƒ์˜ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง„ ํด๋ž˜์Šค๋ฅผ ์“ฐ์ง€ ์•Š๋Š”๋‹ค.' ๋ผ๋Š” ์ œ์•ฝ์„ ์ง€ํ‚ฌ ์ข‹์€ ๋ฐฉ๋ฒ•์ด ๋ฌด์—‡์ผ์ง€..
์ง์ ‘์ ์ธ ์ •๋‹ต์€ ์Šค์Šค๋กœ ์ฐพ์•„์•ผ ํ•œ๋‹ค๋ฉด, ๋ฐฉํ–ฅ์„ฑ์— ๋Œ€ํ•œ ํžŒํŠธ๊ฐ€ ๋ ๋งŒํ•œ ๋ง์”€์„ ํ•ด์ฃผ์‹ค ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ์ญค๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค!

(๋™์ผํ•˜๊ฒŒ 3๊ฐœ์˜ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋˜ Controller์˜ ๊ฒฝ์šฐ, CardShuffleStrategy๋Š” ์ƒํƒœ๋กœ ๊ฐ–์ง€ ์•Š๊ณ  ๋ฉ”์„œ๋“œ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ฃผ์ž…๋ฐ›๋„๋ก ๊ฐœ์„ ํ•ด ํ•ด๊ฒฐ์„ ์‹œ๋„ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.)

  • ๋ฉ”์„œ๋“œ ์œ„์ž„, ์ด๋Œ€๋กœ ๊ดœ์ฐฎ์€ ๊ฑธ๊นŒ์š”?

ํ˜„์žฌ Participant ํด๋ž˜์Šค์—์„œ Cards ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋“ค์„ ๋‹จ์ˆœํžˆ ํ˜ธ์ถœ๋งŒ ํ•˜๋Š” ์‹์˜ public ๋ฉ”์„œ๋“œ๋“ค์ด ๊ฝค ๋˜๋Š”๋ฐ,
์ด๋Ÿฌํ•œ ์œ„์ž„ ๋ฐฉ์‹์ด ๊ณผ๋„ํ•ด์ง€๋ฉด ํด๋ž˜์Šค๋“ค ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋„ˆ๋ฌด ๋†’์•„์ง€๋Š” ๊ฒƒ์ด ์•„๋‹Œ๊ฐ€ ํ•˜๋Š” ์šฐ๋ ค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•ด๋‹น ๋ถ€๋ถ„์„ ์ข€ ๋” ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์•ˆ์„ ๊ณ ๋ฏผํ•ด๋ด์•ผ ํ• ๊นŒ์š”?

  • ๋ถˆ๋ณ€ ๊ฐ์ฒด ์‚ฌ์šฉ์„ ์—ฐ์Šตํ•ด๋ณด๋ ค๊ณ  ํ•˜๋Š”๋ฐ, ๋‹ค์Œ ๋ฆฌํŒฉํ† ๋ง์—์„œ ํ•ด๋‹น ๋‚ด์šฉ์„ ๋ฐ˜์˜ํ•ด๋ด๋„ ๊ดœ์ฐฎ์„๊นŒ์š”?

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

- ErrorMessage enum์„ ์‚ญ์ œํ•˜๊ณ  ์˜ˆ์™ธ ๋ฐœ์ƒ ์ง€์ ์œผ๋กœ ๋ฉ”์‹œ์ง€ ์ด๋™
- ์—๋Ÿฌ ๋ฉ”์‹œ์ง€์— [ERROR] ์ ‘๋‘์‚ฌ ์ถ”๊ฐ€
- InputView์˜ readHitOrStand ๋ฐ˜ํ™˜ ํƒ€์ž…์„ boolean์œผ๋กœ ๋ณ€๊ฒฝํ•ด ์ปจํŠธ๋กค๋Ÿฌ ์˜์กด์„ฑ ์™„ํ™”
- ์˜ˆ์™ธ ํ…Œ์ŠคํŠธ ์‹œ์˜ ๊ตฌ์ฒด์ ์ธ ๋ฉ”์‹œ์ง€ ๊ฒ€์ฆ ์ œ๊ฑฐ
- Main ์ฝ”๋“œ ๊ฐ€๋…์„ฑ ๊ฐœ์„ 
- Controller ๋‚ด ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์—ด๋ ค์žˆ๋˜ public ๋ฉ”์„œ๋“œ๋ฅผ private์œผ๋กœ ๋ณ€๊ฒฝํ•ด ์บก์Аํ™” ๊ฐ•ํ™”
- ๊ฐ ๋„๋ฉ”์ธ๊ณผ InputView์— ์‚ฐ๋ฐœ์ ์œผ๋กœ ์กด์žฌํ•˜๋˜ "[ERROR]" ์ ‘๋‘์‚ฌ ๋ฌธ์ž์—ด์„ ์ œ๊ฑฐํ•˜๊ณ , OutputView์—์„œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•  ๋•Œ ์ผ๊ด„์ ์œผ๋กœ ํฌ๋งทํŒ…ํ•˜๋„๋ก ๊ตฌ์กฐ ๊ฐœ์„ 
- ์ฃผ์š” ๋„๋ฉ”์ธ ์šฉ์–ด(Blackjack, Bust, Hit/Stand) ์ •์˜ ์ถ”๊ฐ€
- ์ถ”๊ฐ€๋œ ๋ฐฐํŒ… ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์„ธ๋ถ€ ๊ธฐ๋Šฅ ๋ชฉ๋ก ์ถ”๊ฐ€
- ์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ฐ’ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์™€ ๋„๋ฉ”์ธ ๊ทœ์น™ ๊ฒ€์ฆ์˜ ์ฑ…์ž„์„ ๋ช…์‹œ์ ์œผ๋กœ ๋ถ„๋ฆฌ
- ์—ฃ์ง€ ์ผ€์ด์Šค ์ฒ˜๋ฆฌ ์ •์ฑ… ๋ช…์‹œ
- '์ •์ˆ˜ ๋ฒ”์œ„ ์ดˆ๊ณผ' ์˜ˆ์™ธ๋ฅผ ๋„๋ฉ”์ธ ๊ทœ์น™ ๊ฒ€์ฆ์—์„œ ์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ฐ’ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋กœ ์ด๋™
- ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ณ€ํ™˜์˜ ์ฑ…์ž„์€ InputView์—, ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์€ ๋„๋ฉ”์ธ์— ์žˆ๋„๋ก ์ฑ…์ž„์„ ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌ
- ์ฝ”๋“œ ์ƒ์— ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š” Ace ์นด๋“œ์˜ ์œ ๋™์  ์ ์ˆ˜ ๊ณ„์‚ฐ(1์  / 11์  ํŒ๋ณ„) ๋กœ์ง์„ ๊ธฐ๋Šฅ ๋ช…์„ธ์— ๊ตฌ์ฒด์ ์œผ๋กœ ๋ฐ˜์˜
- Ace ์นด๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ์žฅ ํฌํ•จ๋  ๊ฒฝ์šฐ์˜ ํ•œ๊ณ„(11์ ์œผ๋กœ ๊ณ„์‚ฐ ๊ฐ€๋Šฅํ•œ Ace๋Š” ์ตœ๋Œ€ 1์žฅ) ๋“ฑ ์—ฃ์ง€ ์ผ€์ด์Šค ๋ช…์‹œ
- ์ฝ”๋“œ์™€ ๊ธฐ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ ๋ฌธ์„œ์˜ ๋™๊ธฐํ™”๋ฅผ ํ†ตํ•ด ๋„๋ฉ”์ธ ๊ทœ์น™์˜ ๊ฐ€์‹œ์„ฑ ํ™•๋ณด
- 21์  ์ด์ƒ์ผ ๋•Œ ์นด๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†๋Š” ๋„๋ฉ”์ธ ๊ทœ์น™ ์˜ˆ์™ธ ๋ฐœ์ƒ ๋กœ์ง ๋ฐ ๊ฒ€์ฆ ์ถ”๊ฐ€
- ๊ฒฝ๊ณ„๊ฐ’(21์  ๋ฏธ๋งŒ, 21์ , 21์  ์ดˆ๊ณผ)์— ๋”ฐ๋ฅธ ์ƒํƒœ ํŒ์ • ๋กœ์ง ํ…Œ์ŠคํŠธ ์ž‘์„ฑ
- ์นด๋“œ ์ƒ์„ฑ private ๋ฉ”์„œ๋“œ ๋„์ž…์œผ๋กœ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ค‘๋ณต ๊ฐœ์„ 
- ์ด๋ฏธ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š” ๋™์ผํ•œ ์นด๋“œ๋ฅผ ์ค‘๋ณตํ•ด์„œ ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์˜ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ช…์‹œ
- ์นด๋“œ๋ฅผ ์ถ”๊ฐ€๋กœ ๋ฐ›์„ ๋•Œ๋งˆ๋‹ค ์‚ฌ์ „ ๊ฒ€์ฆ๋˜์–ด์•ผ ํ•˜๋Š” ๊ณตํ†ต ํ™•์ธ ์‚ฌํ•ญ์„ ๋ช…์‹œ์ ์œผ๋กœ ๋ชฉ๋กํ™”
- ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ฐ ์ƒ์„ธ ์กฐ๊ฑด ๋“ฑ ํ•˜์œ„ ํ•ญ๋ชฉ๊นŒ์ง€ ์ฒดํฌ๋ฐ•์Šค๋ฅผ ๋ถ€์—ฌํ•ด, ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ฐ ํ…Œ์ŠคํŠธ ์ง„ํ–‰๋„๋ฅผ ๋”์šฑ ์„ธ๋ฐ€ํ•˜๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก
๋ฌธ์„œ ์–‘์‹ ๊ฐœ์„ 
- ๊ธฐ์กด Collections.unmodifiableList ์˜ 'View' ๋ฐฉ์‹์—์„œ 'Snapshot' ๋ฐฉ์‹์ธ
List.copyOf๋กœ ๋ณ€๊ฒฝ
- ์›๋ณธ ๋ฆฌ์ŠคํŠธ์˜ ๋ณ€๊ฒฝ์ด ๋„๋ฉ”์ธ ๊ฐ์ฒด ๋‚ด๋ถ€ ๋ฆฌ์ŠคํŠธ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋„๋ก ์›๋ณธ๊ณผ์˜ ์ฐธ์กฐ ์—ฐ๊ฒฐ์„ ์™„์ „ํžˆ ์ฐจ๋‹จ
- ๋ฐฐํŒ… ๊ธˆ์•ก์„ ๊ด€๋ฆฌํ•˜๋Š” BetMoney ๊ฐ์ฒด ๊ตฌํ˜„
- 0 ์ดํ•˜์˜ ๊ธˆ์•ก ์ž…๋ ฅ ์‹œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋กœ์ง ์ถ”๊ฐ€
- ๋ฐฐํŒ… ๊ธˆ์•ก์ด ๊ณต๋ฐฑ์ธ ๊ฒฝ์šฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
- ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๋ฅผ ์ž…๋ ฅํ•œ ๊ฒฝ์šฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
- ๋ฐฐํŒ… ๊ธˆ์•ก์ด ์ •์ˆ˜ ๋ฒ”์œ„๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
- ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ํ”Œ๋ ˆ์ด์–ด๋ณ„๋กœ ๋ฐฐํŒ… ๊ธˆ์•ก์„ ์ž…๋ ฅ๋ฐ›์•„ Player ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ๋ฆ„ ๊ตฌํ˜„
- Player ์ƒ์„ฑ ์‹œ ๋ฏธ๋ฆฌ ๊ฒ€์ฆ๋œ Name๊ณผ BetMoney๋ฅผ ํ•„์ˆ˜๋กœ ๋ฐ›๋„๋ก ๋„๋ฉ”์ธ ์ƒ์„ฑ์ž ๋ณ€๊ฒฝ
- ๋„๋ฉ”์ธ ์‹œ๊ทธ๋‹ˆ์ฒ˜ ๋ณ€๊ฒฝ์— ๋”ฐ๋ผ Game, Players ๋ฐ ์—ฐ๊ด€ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ „๋ฉด ์ˆ˜์ •
- ๋ธ”๋ž™์žญ ์ƒํ™ฉ ์ œ์™ธ, ์ผ๋ฐ˜์ ์ธ ์Šน/๋ฌด/ํŒจ ์ƒํ™ฉ์˜ ๋ฐฐ๋‹น๋ฅ (1, 0, -1)์„ ์ ์šฉํ•œ ํ”Œ๋ ˆ์ด์–ด ์ˆ˜์ต ๊ณ„์‚ฐ ๋กœ์ง ๊ตฌํ˜„
- ํ”Œ๋ ˆ์ด์–ด๋“ค์˜ ์ˆ˜์ต ํ•ฉ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋”œ๋Ÿฌ์˜ ์ตœ์ข… ์ˆ˜์ต์„ ๊ณ„์‚ฐํ•˜๋Š” ๋กœ์ง ์ถ”๊ฐ€
- ๊ฒŒ์ž„ ์ข…๋ฃŒ ํ›„ ๋”œ๋Ÿฌ์™€ ํ”Œ๋ ˆ์ด์–ด์˜ ์ตœ์ข… ์ˆ˜์ต์„ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๋Š” ๋กœ์ง ์ถ”๊ฐ€
์ฒ˜์Œ ๋ฐ›์€ 2์žฅ์˜ ์นด๋“œ๊ฐ€ 21์ ์ผ ๊ฒฝ์šฐ(๋ธ”๋ž™์žญ) ๋ฐฐํŒ… ๊ธˆ์•ก์˜ 1.5๋ฐฐ ์ˆ˜์ต์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋กœ์ง ์ถ”๊ฐ€
- Map.copyOf() ์‚ฌ์šฉ ์‹œ LinkedHashMap์˜ ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ
- ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ถˆ๋ณ€์„ฑ์„ ๋ณด์žฅํ•˜๋„๋ก Collections.unmodifiableMap()์œผ๋กœ ๋ณ€๊ฒฝ
- Cards ๋‚ด๋ถ€์—์„œ 21์  ์ด์ƒ์ผ ๋•Œ ์นด๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์˜ˆ์™ธ๋ฅผ ๋˜์ ธ ๊ฒŒ์ž„ ์ง„ํ–‰์ด ๋ง‰ํžˆ๋˜ ๋ฌธ์ œ ํ•ด๊ฒฐ
- ๋ถˆํ•„์š”ํ•ด์ง„ 21์  ์ดˆ๊ณผ ์˜ˆ์™ธ ๊ฒ€์ฆ ๋กœ์ง ์ œ๊ฑฐ ๋ฐ README ์š”๊ตฌ์‚ฌํ•ญ ๋™๊ธฐํ™”
- ๊ฒŒ์ž„์˜ ์ตœ์ข… ์ˆ˜์ต ์ •์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ์›์‹œ ํƒ€์ž… Long ๋Œ€์‹  Profit ๋ž˜ํผ ๊ฐ์ฒด๋กœ ํฌ์žฅ
- BlackJackController๊ฐ€ ํ•„๋“œ๋กœ ๊ฐ€์ง€๋˜ CardShuffleStrategy๋ฅผ ๋ฉ”์„œ๋“œ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ถ„๋ฆฌํ•ด ์ปจํŠธ๋กค๋Ÿฌ
์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์—์„œ ์ œ๊ฑฐ
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant