Skip to content

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

Merged
hyeonic merged 32 commits intowoowacourse:miniminjae92from
miniminjae92:step1
Mar 11, 2026

Conversation

@miniminjae92
Copy link

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

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

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

๊ฐ€๋…์„ฑ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค, ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์ด ๋งŽ์€๋ฐ ๊ฐ€๋…์„ฑ์ด ๋ถ€์กฑํ•œ ๋ถ€๋ถ„๋“ค์— ๋Œ€ํ•ด์„œ ์•Œ๊ณ ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‚ฎ์€ ๊ฒฐํ•ฉ๋„์™€ ๋†’์€ ์‘์ง‘๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์‹ถ์€๋ฐ ๊ตฌ์ฒด์ ์ธ ๋ฐฉ๋ฒ•๊ณผ ๊ฒฝํ—˜์„ ๋งŽ์ด ์Œ“๊ณ ์‹ถ์Šต๋‹ˆ๋‹ค.

์ผ๊ธ‰ ์ปฌ๋ ‰์…˜์„ ์ˆœํšŒํ•  ์ˆ˜ ์žˆ๋„๋ก ์ดํ„ฐ๋Ÿฌ๋ธ”์„ ๊ตฌํ˜„ํ•˜๋ฉด ์•ˆ๋˜๋Š” ๊ฒƒ์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

Enum ์ž‘์„ฑ์„ ํ•  ๋•Œ์— ํ•„๋“œ๋กœ ๋ทฐ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ String์„ ๊ฐ€์ ธ๋„ ๋˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.
Enum๊ฐ์ฒด.name์œผ๋กœ equals๋ฅผ ์ด์šฉํ•ด์•ผํ•˜๋Š” ๊ฒƒ์ธ์ง€ ์‚ฌ์šฉํ•ด๋„ ๊ดœ์ฐฎ์€์ง€์— ๋Œ€ํ•œ ํŒ๋‹จ์ด ํ—ท๊ฐˆ๋ฆฝ๋‹ˆ๋‹ค.

์ƒ์†์„ ์ฒ˜์Œ ์‚ฌ์šฉํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ํ•ธ๋“œ์™€ ๊ฐ™์€ ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ธํ„ฐํŽ˜์ด์Šค๋ณด๋‹ค ์ถ”์ƒํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ํŽ˜์–ด์˜ ์˜๊ฒฌ์ธ ํ•„๋“œ๋ฅผ private๋กœ ํ•˜๋Š” ๊ฒƒ์„ ์ง€ํ–ฅํ•ด์•ผํ•œ๋‹ค๋Š” ์–˜๊ธฐ๋ฅผ ๋“ฃ๊ณ  ์ƒ๊ฐ์„ ํ•ด๋ณด๋‹ˆ ์˜์กด์„ฑ์„ ์œ„ํ•ด์„œ๋Š” ๊ทธ๊ฒƒ์ด ์ข‹๊ฒ ๋‹ค๊ณ  ๋А๊ผˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ player, dealer๋ฅผ ๋‹ค๋ฃฐ ๋•Œ hand๋ฅผ ๋งˆ์Œ๊ป ๋‹ค๋ฃฐ ์ˆ˜ ์—†์Œ์— ๋ถˆํŽธํ–ˆ๊ณ  ์ ‘๊ทผ์ œ์–ด์ž๋ฅผ protected์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋˜๋Š”์ง€๊ฐ€ ๊ถ๊ธˆํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ๋ฅผ protected์œผ๋กœ Participant์— ๊ตฌํ˜„ํ•˜๋ฉด์„œ ์ƒํƒœ๋Š” private๋กœ ์œ ์ง€ํ•˜๋„๋ก ์ตœ๋Œ€ํ•œ ๋…ธ๋ ฅํ•˜๋Š” ๊ฒƒ์ด ๋งž๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฆ„์„ ์ง“๋Š” ๊ฒƒ์ด ๋„ˆ๋ฌด ์–ด๋ ค์šด๋ฐ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ๋ณด๋Š” ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•˜๋Š”๋ฐ ๋‹ค๋ฅธ ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋ฉด ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ์— ์ƒ์„ฑํ•œ ํด๋ž˜์Šค๊ฐ€ ๋งŽ๋‹ค๊ณ  ๋А๊ปด์กŒ๋Š”๋ฐ ์–ด๋–ค ์‹์œผ๋กœ ๋ถ„๋ฅ˜๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„์ง€ ๊ณ ๋ฏผ์„ ํ–ˆ๋Š”๋ฐ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค. ๊ด€๋ก€๊ฐ€ ์žˆ์„๊นŒ์š”?

๋‹จ์œ„ํ…Œ์ŠคํŠธ๋งŒ ์ž‘์„ฑํ•œ ๊ฒฝํ—˜์ด ์žˆ๋Š”๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‹จ์œ„์—์„œ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ํ†ตํ•ฉํ…Œ์ŠคํŠธ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์„๊นŒ์š”? ๋งž๋‹ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‹จ์œ„์—์„œ์˜ ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์ˆ˜์ ์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์ฒ˜์Œ์— ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ฐ›์•˜์„ ๋•Œ ํ•ต์‹ฌ ์š”๊ตฌ์‚ฌํ•ญ์—์„œ ๋„์ถœ๋˜๋Š” ๊ธฐ๋Šฅ๋ชฉ๋ก๊ณผ ์‹œ๋‚˜๋ฆฌ์˜ค์ฒ˜๋Ÿผ ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ์—์„œ ๋‚˜์˜ค๋Š” ์ˆœ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•œ ๊ธฐ๋Šฅ๋ชฉ๋ก์ด ํ•จ๊ป˜ ๋„์ถœ๋์„ ๋•Œ ์–ด๋–ป๊ฒŒ ์ •๋ฆฌ๋ฅผ ํ•˜๊ณ  ์–ด๋””๊นŒ์ง€ ์„ค๊ณ„๋ฅผ ํ•˜๊ณ  ๊ตฌํ˜„์— ๋ฌด์—‡๋ถ€ํ„ฐ ๋“ค์–ด๊ฐ€์•ผํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์‹ค์ „์—์„œ ๊ณ ๋ฏผ์ด ๋  ๋•Œ๊ฐ€ ๋งŽ์•„ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋ฐ›๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@miniminjae92 miniminjae92 changed the title [:rocket: ์‚ฌ์ดํด1 - ๋ฏธ์…˜ (๋ธ”๋ž™์žญ ๊ฒŒ์ž„ ์‹คํ–‰)] ๊ณ ๋ž˜ ๋ฏธ์…˜ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค. [๐Ÿš€ ์‚ฌ์ดํด1 - ๋ฏธ์…˜ (๋ธ”๋ž™์žญ ๊ฒŒ์ž„ ์‹คํ–‰)] ๊ณ ๋ž˜ ๋ฏธ์…˜ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค. Mar 10, 2026
Copy link

@hyeonic hyeonic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์•ˆ๋…•ํ•˜์„ธ์š” ๊ณ ๋ž˜~ ๋ธ”๋ž™์žญ ๋ฆฌ๋ทฐ๋ฅผ ๋งก์€ ๋งคํŠธ์ž…๋‹ˆ๋‹ค!

์งˆ๋ฌธ ์ฃผ์‹  ๋ถ€๋ถ„์„ ํฌํ•จํ•˜์—ฌ ๊ฐ„๋‹จํžˆ ์ฝ”๋ฉ˜ํŠธ ๋‚จ๊ฒผ์Šต๋‹ˆ๋‹ค. ํ™•์ธํ•ด์ฃผ์‹œ๊ณ  ๋†“์นœ ๋ถ€๋ถ„ ์žˆ๋‹ค๋ฉด ํŽธํ•˜๊ฒŒ ๋””์—  ํ˜น์€ ์ฝ”๋ฉ˜ํŠธ ๋‚จ๊ฒจ์ฃผ์„ธ์š”!


์•„๋ž˜๋Š” ์ฝ”๋“œ ๋ ˆ๋ฒจ์—์„œ ๋‚จ๊ธฐ๊ธฐ ์–ด๋ ค์šด ๋ถ€๋ถ„์ด๋ผ ๋”ฐ๋กœ ์ •๋ฆฌํ•˜์˜€์–ด์š”.

๊ฐ€๋…์„ฑ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค, ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์ด ๋งŽ์€๋ฐ ๊ฐ€๋…์„ฑ์ด ๋ถ€์กฑํ•œ ๋ถ€๋ถ„๋“ค์— ๋Œ€ํ•ด์„œ ์•Œ๊ณ ์‹ถ์Šต๋‹ˆ๋‹ค.

์ด๋ฆ„์„ ์ง“๋Š” ๊ฒƒ์ด ๋„ˆ๋ฌด ์–ด๋ ค์šด๋ฐ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ๋ณด๋Š” ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•˜๋Š”๋ฐ ๋‹ค๋ฅธ ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋ฉด ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

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

์ด๋ฆ„ ์ง“๋Š” ๊ฒƒ ๋˜ํ•œ ๋น„์Šทํ•œ ๋งฅ๋ฝ์œผ๋กœ ํ†ตํ•  ๊ฒƒ ๊ฐ™์•„์š”. ์ €๋Š” ๋ณดํ†ต ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ๊ธฐ์—ฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ดํŽด๋ณด๋ฉฐ ์ ์ ˆํ•œ ๋„ค์ด๋ฐ ๋ฐฉ์‹์„ ์ฐธ๊ณ ํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

๋‚ฎ์€ ๊ฒฐํ•ฉ๋„์™€ ๋†’์€ ์‘์ง‘๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์‹ถ์€๋ฐ ๊ตฌ์ฒด์ ์ธ ๋ฐฉ๋ฒ•๊ณผ ๊ฒฝํ—˜์„ ๋งŽ์ด ์Œ“๊ณ ์‹ถ์Šต๋‹ˆ๋‹ค.

์™œ ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„์™€ ๋†’์€ ์‘์ง‘๋„๊ฐ€ ํ•„์š”ํ• ๊นŒ์š”? ๋จผ์ € ๊ณ ๋ž˜๊ฐ€ ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•๊ณผ ๊ฒฝํ—˜์„ ๊ฐ€์ง€๊ณ  ์‹ถ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ ๋‹ฌ์„ฑํ•˜์ง€ ๋ชปํ–ˆ์„ ๋•Œ ์–ด๋–ค ๋‹จ์ ์„ ๋А๋ผ์…จ๋‚˜์š”?

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

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

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pull_request_template.md๋Š” ์–ด๋–ค ์—ญํ• ์˜ ํŒŒ์ผ์ธ๊ฐ€์š”?? ์—ญํ• ์— ๋งž๋Š” ๋‚ด์šฉ์„ ๊ธฐ์ž… ํ•˜์˜€๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์„๊นŒ์š”??

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pull_request_template.md์˜ ์กด์žฌ ์ด์œ ๋ฅผ ๊นŠ์ด ๊ณ ๋ฏผํ•ด๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
์œ„ ํŒŒ์ผ ์ž์ฒด์— ์ œ ๊ฐœ์ธ์ ์ธ ์งˆ๋ฌธ์„ ๋‹ด๋Š” ๊ฒƒ์ด ํŒŒ์ผ์˜ ๋ชฉ์ (์–‘์‹ ์ œ๊ณต)์— ์–ด๊ธ‹๋‚œ๋‹ค๋Š” ์ ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ด PR ๋ณธ๋ฌธ์€ ์ œ ์ฝ”๋“œ๋ฅผ ๋งˆ์ฃผํ•  ๋ฆฌ๋ทฐ์–ด์— ๋Œ€ํ•œ '๋ฐฐ๋ ค๋ฅผ ๋‹ด๋Š” ๊ทธ๋ฆ‡'์ด๋ผ๋Š” ์ ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

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

์•ž์œผ๋กœ๋Š” ์ž‘์„ฑํ•ด์ฃผ์‹  ํ…œํ”Œ๋ฆฟ์˜ ์˜๋„๋ฅผ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜์—ฌ, ์ œ ๊ณ ๋ฏผ์˜ ๊ถค์ ์„ ์‰ฝ๊ฒŒ ๋”ฐ๋ผ์˜ค์‹ค ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ํ•œ ๊ฐ€์ง€ ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค ๋งคํŠธ!

์ƒˆ๋กญ๊ฒŒ ํ’€๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋ณด๋ƒˆ์„ ๋•Œ PR ๋ณธ๋ฌธ์„ ์ƒˆ๋กญ๊ฒŒ ์ˆ˜์ •ํ•ด๋„ ๋˜๋Š”์ง€, ์ข‹์€ ๋ฐฉ๋ฒ•์ธ๊ฑด์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์ƒˆ๋กญ๊ฒŒ ๋ณธ๋ฌธ์„ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ๋งž๋Š”๊ฑฐ๋ผ๋ฉด ์ด๋ฒˆ์— ๋ณ€๊ฒฝ์‚ฌํ•ญ๋“ค์— ๋Œ€ํ•ด์„œ ํ•ต์‹ฌ ์š”์•ฝ์„ ํ•˜๊ณ  ๊ทธ๊ฒƒ๋“ค์— ๋Œ€ํ•œ ๊ทผ๊ฑฐ๋“ค์„ ์ž‘์„ฑํ•˜๋Š” ์ •๋„๋ฉด ๊ดœ์ฐฎ์„๊นŒ์š”?

Copy link

@hyeonic hyeonic Mar 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR ํ…œํ”Œ๋ฆฟ์€ ๊ทธ๋ƒฅ ๋‹จ์ˆœํžˆ ๊ฐ€์ด๋“œ๋ฅผ ์ œ๊ณต ํ•ด์ค„๋ฟ์ž…๋‹ˆ๋‹ค ใ…Žใ…Ž ๊ณ ๋ž˜๊ฐ€ ์ƒ๊ฐ ํ–ˆ์„ ๋•Œ ์ถ”๊ฐ€์ ์ธ ๋‚ด์šฉ์ด ํ•„์š”ํ•˜๋‹ค ํŒ๋‹จํ•˜๋ฉด ์ž์œ ๋กญ๊ฒŒ ์ž‘์„ฑํ•ด๋„ ๊ดœ์ฐฎ์•„์š”.

๋‹ค๋งŒ ์ฝ”๋“œ ๊ด€๋ จ ์งˆ๋ฌธ์ด๋ผ๋ฉด ์ฝ”๋“œ ๋ฒ ์ด์Šค์— ์ฝ”๋ฉ˜ํŠธ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ ์ฃผ์‹œ๋Š”๊ฒŒ ์ „์ฒด์ ์ธ ๋งฅ๋ฝ์„ ํŒŒ์•…ํ•˜๋Š”๋ฐ ๋” ์šฉ์ดํ•  ๊ฒƒ ๊ฐ™์•„์š”.

Comment on lines +6 to +21
public record CardDto(List<Card> cards) {

public String getFormattedCards() {
List<String> cardsResult = new ArrayList<>();
for (Card card : cards) {
String suit = card.suitValue();
String rank = card.symbol();
cardsResult.add(rank + suit);
}
return String.join(", ", cardsResult);
}

public int size() {
return cards().size();
}
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๊ณ ๋ž˜๊ฐ€ ์ƒ๊ฐํ•˜๋Š” dto๋Š” ๋ฌด์—‡์ด๋ฉฐ ์–ด๋– ํ•œ ๋ชฉ์ ์œผ๋กœ ํ™œ์šฉํ•˜๋ฉด ์ข‹์„๊นŒ์š”?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ œ๊ฐ€ ์ƒ๊ฐํ•˜๋Š” dto๋Š” ์ˆœ์ˆ˜ํ•œ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๊ฐ์ฒด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๋ชฉ์ ์€ ํ•ต์‹ฌ ๊ฐ์ฒด๊ฐ€ ์ž์œจ์ ์œผ๋กœ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์บก์Аํ™”๋ฅผ ์ง€์ผœ์ฃผ์–ด ๋ณ€๊ฒฝ์ด ์ƒ๊ฒผ์„ ๋•Œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ ๊ฐ์ฒด์™€์˜ ์˜์กด์„ฑ์ด ์ƒ๊ธฐ์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํ•„๋“œ๋กœ๋Š” ์›์‹œํƒ€์ž… ์‚ฌ์šฉ์„ ์ง€ํ–ฅํ•˜๋ฉฐ ๋กœ์ง์„ ๊ฐ€์ง€์ง€ ์•Š๋Š” ์ˆœ์ˆ˜ํ•œ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์— ์ง‘์ค‘ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Comment on lines +3 to +16
public record Card(Suit suit, Rank cardNumber) {
public boolean isAce() {
return this.cardNumber == Rank.ACE;
}

public String suitValue() {
return this.suit.getValue();
}

public String symbol() {
return this.cardNumber.getSymbol();
}

}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

record๋ฅผ ํ™œ์šฉํ•˜์˜€๋„ค์š”! ์–ด๋– ํ•œ ํŠน์„ฑ ๋•Œ๋ฌธ์— ํ™œ์šฉํ•˜์˜€์„๊นŒ์š”??

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ €๋Š” record๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ’ ์ž์ฒด๊ฐ€ ๊ทธ ๊ฐ์ฒด๋ฅผ ํ‘œํ˜„ํ•˜๋Š”๊ฐ€์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐ์„ ํ•ด๋ด…๋‹ˆ๋‹ค.
'๊ฐ™์€ ๋ฌด๋Šฌ, ๊ฐ™์€ ์ˆซ์ž๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์„ ๋•Œ ๊ฐ™์€ ์นด๋“œ์ธ๊ฐ€?'์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐํ•ด๋ดค๊ณ  ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ์— ๊ฐ™์€ ์นด๋“œ๊ฐ€ ๋งž๋‹ค๋ผ๋Š” ํŒ๋‹จ์ด ๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์— record๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์ œ๊ฐ€ ์•Œ๊ณ  ์žˆ์—ˆ๋˜ record์˜ ํŠน์„ฑ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ถˆ๋ณ€ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ํ•„๋“œ๊ฐ€ ์•”์‹œ์ ์œผ๋กœ final๋กœ ์„ ์–ธ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ•„๋“œ์— ๋Œ€ํ•œ ํ–‰๋™์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋กœ ์ธํ•ด ์œ ํšจ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๋“ฑ ํ™œ์šฉ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ œ๊ฑฐ ํšจ๊ณผ๋กœ ์ฝ”๋“œ์˜ ๊ฐ„๊ฒฐ์„ฑ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. equals, hashcode, getter, toString์„ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•„๋“œ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ค๋‹ˆ๋‹ค.

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

public record Hand(List<Card> cards) {
    public Hand {
        // ์ƒ์„ฑ ์‹œ์ ์— ์ฝ๊ธฐ ์ „์šฉ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ €์žฅ
        cards = List.copyOf(cards); 
    }
}

๋˜ํ•œ record์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ •ํ™•ํ•œ ์šฉ์–ด์— ๋Œ€ํ•ด์„œ๋„ ์ถ”๊ฐ€์ ์œผ๋กœ ์•Œ๊ฒŒ ๋์Šต๋‹ˆ๋‹ค.

  • Getter -> Accessor
  • ์ƒํƒœ -> ์ปดํฌ๋„ŒํŠธ
  • ์ƒ์„ฑ์ž -> ์ปดํŒฉํŠธ ์ƒ์„ฑ๏ฟฝ์ž

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ œ๊ฐ€ ์ƒ๊ฐํ•œ ๊ฒƒ ๋ณด๋‹ค ๋” ๊ผผ๊ผผํ•˜๊ฒŒ ํ•™์Šตํ•˜์˜€๋„ค์š” ๐Ÿ‘

import java.util.List;
import java.util.Set;

public class Players implements Iterable<Player> {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ผ๊ธ‰ ์ปฌ๋ ‰์…˜์„ ์ˆœํšŒํ•  ์ˆ˜ ์žˆ๋„๋ก ์ดํ„ฐ๋Ÿฌ๋ธ”์„ ๊ตฌํ˜„ํ•˜๋ฉด ์•ˆ๋˜๋Š” ๊ฒƒ์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

๋จผ์ € ๊ณ ๋ž˜์˜ ์˜๋„๋ฅผ ๋“ค์–ด๋ณด๊ณ  ํŒ๋‹จํ•ด๋ด๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š” ใ…Žใ…Ž

  1. ๊ณ ๋ž˜๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ์ผ๊ธ‰์ปฌ๋ ‰์…˜์€ ๋ฌด์—‡์ด๋ฉฐ ์™œ ํ•„์š”ํ• ๊นŒ์š”?
  2. Iterable๊ณผ ๊ฐ™์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•œ ํŒ๋‹จ ๊ธฐ์ค€์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ œ๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ์ผ๊ธ‰์ปฌ๋ ‰์…˜์€ ๋™์ผํ•œ ๊ฐ์ฒด๋“ค์˜ ๋ชจ์€ ์ปฌ๋ ‰์…˜๊ณผ ๊ด€๋ จ๋œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์‘์ง‘๋„ ์žˆ๊ฒŒ ๋ชจ์•„์ฃผ๊ณ  ์บก์Аํ™”๋ฅผ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Iterable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํŒ๋‹จํ•œ ๊ธฐ์ค€์€ ๊ฐ ํ”Œ๋ ˆ์ด์–ด๋งˆ๋‹ค ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ฐ›์€ ํ›„ ๊ทธ ์ž…๋ ฅ์— ๋”ฐ๋ฅธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผํ•˜๋Š”๋ฐ ์ผ๊ธ‰์ปฌ๋ ‰์…˜์—๊ฒŒ ์œ„์ž„์„ ํ•˜๋ฉด ์ผ๊ธ‰์ปฌ๋ ‰์…˜ ๋‚ด์—์„œ ๋ทฐ์™€์˜ ์˜์กด์ด ์ƒ๊ธธ ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•ด์„œ ๋ฐ–์—์„œ ์ˆœํšŒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๋‹ต์„ ํ•˜๋ฉด์„œ ๋“  ์ƒ๊ฐ์€ ๋…ธ์ถœ๋œ player๋ฅผ ํ†ตํ•ด์„œ ์˜๋„์น˜ ์•Š์€ ๋™์ž‘์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์—†๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด Iterable์„ ์‚ฌ์šฉํ•ด๋„ ๊ดœ์ฐฎ์„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋„ค ์ข‹์Šต๋‹ˆ๋‹ค. Iterable ๋‚ด์—์„œ ์ œ๊ณตํ•˜๋Š” ์ŠคํŽ™์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ์‚ฌ์šฉํ•ด๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”. ๋‹ค๋งŒ ํ•œ ๊ฐ€์ง€ ์ถ”๊ฐ€์ ์œผ๋กœ ๊ณ ๋ คํ•ด์•ผ ํ•  ๋ถ€๋ถ„์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค๋Š” ๊ฑด ํ•ด๋‹น ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ๋ช…์‹œํ•œ ์ŠคํŽ™์„ ๋”ฐ๋ผ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๊ธฐ๋„ ํ•ด์š”. ๊ฐ€๋ น Iterable์„ ๋ฉ”์„œ๋“œ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณผ๊ฒŒ์š”. ๋งŒ์•ฝ ๊ณ ๋ž˜๊ฐ€ overrideํ•œ ํ•จ์ˆ˜๊ฐ€ ์˜๋„์™€ ๋‹ค๋ฅด๊ฒŒ ๊ตฌํ˜„๋˜์—ˆ๋‹ค๋ฉด ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ๋œ ๋ฉ”์„œ๋“œ๋Š” ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜์—ˆ์Œ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ์ด๋Ÿฐ ๋ถ€๋ถ„๋“ค์„ ๊นŒ์ง€ ์ž˜ ์œ ์˜ํ•ด์„œ ๊ตฌ์„ฑํ•˜๋ฉด ์ถฉ๋ถ„ํžˆ ์‚ฌ์šฉํ•ด๋„ ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค ๐Ÿ‘

Comment on lines +14 to +16
private Players(List<Player> players) {
this.players = List.copyOf(players);
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

copyOf๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋„ค์š”! ์–ด๋–ค ์ด์ ์ด ์žˆ์—ˆ๋‚˜์š”??

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

final๋งŒ์œผ๋กœ๋Š” ์ฐธ์กฐ์— ๋Œ€ํ•œ ๋ถˆ๋ณ€๋งŒ ๋ณด์žฅ๋˜๋Š”๋ฐ ๋งŒ์•ฝ์— copyOf ์—†์ด ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์™ธ๋ถ€์˜ players ์ธ์Šคํ„ด์Šค์— ์ฐธ์กฐ๋กœ ์ธํ•ด ๋‚ด๋ถ€๊ฐ€ ์˜๋„์น˜ ์•Š์€ ๋ณ€๊ฒฝ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  copyOf๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์ปฌ๋ ‰์…˜์˜ ๊ตฌ์กฐ์— ๋Œ€ํ•ด์„œ๋„ ๋ถˆ๋ณ€์ด ๋ณด์žฅ ๋˜์–ด์„œ ๋‚ด/์™ธ๋ถ€์˜ ์˜๋„์น˜ ์•Š์€ ์กฐ์ž‘์œผ๋กœ๋ถ€ํ„ฐ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.


๋ธ”๋ž™์žญ ๋ฏธ์…˜ ์ €์žฅ์†Œ

## ๊ธฐ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ฒ˜์Œ์— ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ฐ›์•˜์„ ๋•Œ ํ•ต์‹ฌ ์š”๊ตฌ์‚ฌํ•ญ์—์„œ ๋„์ถœ๋˜๋Š” ๊ธฐ๋Šฅ๋ชฉ๋ก๊ณผ ์‹œ๋‚˜๋ฆฌ์˜ค์ฒ˜๋Ÿผ ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ์—์„œ ๋‚˜์˜ค๋Š” ์ˆœ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•œ ๊ธฐ๋Šฅ๋ชฉ๋ก์ด ํ•จ๊ป˜ ๋„์ถœ๋์„ ๋•Œ ์–ด๋–ป๊ฒŒ ์ •๋ฆฌ๋ฅผ ํ•˜๊ณ  ์–ด๋””๊นŒ์ง€ ์„ค๊ณ„๋ฅผ ํ•˜๊ณ  ๊ตฌํ˜„์— ๋ฌด์—‡๋ถ€ํ„ฐ ๋“ค์–ด๊ฐ€์•ผํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์‹ค์ „์—์„œ ๊ณ ๋ฏผ์ด ๋  ๋•Œ๊ฐ€ ๋งŽ์•„ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋ฐ›๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋จผ์ € ํ•œ ๊ฐ€์ง€ ์ผ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์–ด๋–ป๊นŒ์š”? ์ด๋ฒˆ ๋ฏธ์…˜์ฒ˜๋Ÿผ ๋ธ”๋ž™์žญ ๊ฒŒ์ž„์œผ๋กœ ๊ฐ€์ •ํ•ด๋ณผ๊ฒŒ์š”.

  • [ ] ์นด๋“œ ํ•ฉ๊ณ„๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.
    • [ ] ACE๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ „์ฒด ์นด๋“œ ์ ์ˆ˜๋ฅผ ํ•ฉ์‚ฐํ•œ๋‹ค.
    • [ ] ACE๋ฅผ 11๋กœ ๊ณ„์‚ฐํ–ˆ์„ ๋•Œ ํ•ฉ๊ณ„๊ฐ€ 21์„ ์ดˆ๊ณผํ•˜๋ฉด ํ•ด๋‹น ACE๋Š” 1๋กœ ๊ณ„์‚ฐํ•œ๋‹ค.
    • [ ] ACE๋ฅผ 11๋กœ ๊ณ„์‚ฐํ–ˆ์„ ๋•Œ ํ•ฉ๊ณ„๊ฐ€ 21 ์ดํ•˜์ด๋ฉด ํ•ด๋‹น ACE๋Š” 11๋กœ ๊ณ„์‚ฐํ•œ๋‹ค.
  • [ ] ์นด๋“œ ๋ญ‰์น˜๊ฐ€ ๋น„์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์—†๋‹ค.
  • [ ] ...

์ด๋Ÿฌํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๊ฒฐ๊ตญ ํŠน์ •ํ•œ ํ•œ ๊ฐ€์ง€ ์ƒํ™ฉ์— ์ง‘์ค‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— TDD ์‚ฌ์ดํด์„ ์ง„ํ–‰ํ•˜๋Š” ๋ฐ ๋ฌด๋ฆฌ ์—†์ด ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์š”. ๋˜ํ•œ ๊ฐ๊ฐ์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ํ•ด๊ฒฐํ•˜๋‹ค๋ณด๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฐ์ฒด๋ฅผ ๋– ์˜ฌ๋ฆฌ๊ฒŒ ๋˜๋Š”๋ฐ์š”, ์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์ด ๋ชจ์—ฌ ๊ฒฐ๊ตญ Card, Deck๊ณผ ๊ฐ™์€ ๊ฐ์ฒด์™€ ์ฑ…์ž„์ด ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ž‘์€ ๋‹จ์œ„์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ƒ๊ฐํ•˜๊ณ  ์˜์กด์„ฑ์ด ๊ฐ€์žฅ ์—†์–ด ๋ณด์ด๋Š” ์ž‘์€ ๊ฐ์ฒด๋ถ€ํ„ฐ TDD ํ•ด๋ณด์ž๋Š” ์ƒ๊ฐ์„ ๋•๋ถ„์— ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!

Comment on lines +17 to +27
public static Deck create() {
List<Card> cards = new ArrayList<>();

for (Suit suit : Suit.values()) {
for (Rank cardNumber : Rank.values()) {
cards.add(new Card(suit, cardNumber));
}
}

return new Deck(cards);
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ถฐ ๋ށ์Šค๋ฅผ ์ค„์—ฌ๋ณผ๊นŒ์š”?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ฒ˜์Œ์—๋Š” ์ด์ค‘ for๋ฌธ์ด ๊ฐ€๋…์„ฑ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ–ˆ๋Š”๋ฐ ์ œ ๊ฐœ์ธ์ ์ธ ์ฃผ๊ด€์ด ๋งŽ์ด ๋“ค์–ด๊ฐ„ ๊ฒƒ์ด๋ผ ๋งคํŠธ์˜ ์˜๊ฒฌ๋„ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์š”๊ตฌ ์‚ฌํ•ญ์„ ์ง€ํ‚ฌ ๋•Œ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ๋– ์˜ฌ๋ž์Šต๋‹ˆ๋‹ค.
์œ„ ์ฒ˜๋Ÿผ ์ŠคํŠธ๋ฆผ์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ์ค‘์ฒฉ๋œ for ๋ฌธ๋งŒ ๋ฉ”์„œ๋“œ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.
flatMap์„ ์ด์šฉํ•œ ์ด์ค‘ ์ŠคํŠธ๋ฆผ์ด ํ•œ๋ˆˆ์— ๋“ค์–ด์™€์„œ ๋” ๊ฐ€๋…์„ฑ์ด ๋‚ซ๋‹ค๊ณ  ๋А๊ผˆ๋Š”๋ฐ ๊ดœ์ฐฎ์„๊นŒ์š”?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋‘˜ ๋‹ค ๊ฐ€๋…์„ฑ ์ธก๋ฉด์ด๋ผ ํฌ๊ฒŒ ์ƒ๊ด€์€ ์—†์–ด๋ณด์—ฌ์š”. ์—ฌ๋Ÿฌ ํŒ€์›๊ณผ ํ•จ๊ป˜ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ผ๋ฉด ์ผ์ข…์˜ ๋ฃฐ๋งŒ ์ง€ํ‚ค๋ฉด ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ Stream์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ํŠน์„ฑ์„ ์ž˜ ์•Œ๊ณ  ์“ฐ๋Š”๊ฒŒ ๋” ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ด์š” ใ…Žใ…Ž

Comment on lines +36 to +38
public void shuffle() {
Collections.shuffle(this.cards);
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shuffle๊ณผ ๊ฐ™์ด ์ œ์–ดํ•  ์ˆœ ์—†๋Š” ์˜์—ญ์€ ์–ด๋–ป๊ฒŒ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment on lines +34 to +46
@Override
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) {
return false;
}
Participant participant = (Participant) o;
return Objects.equals(name, participant.name);
}

@Override
public int hashCode() {
return Objects.hash(name);
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Equals, HashCode๋ฅผ ์žฌ์ •์˜ํ•˜์˜€๋„ค์š”! ์–ด๋– ํ•œ ๊ฒฝ์šฐ ํ™œ์šฉํ•˜๊ฒŒ ๋˜๋‚˜์š”?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง„ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ค‘๋ณต์œผ๋กœ ์กด์žฌํ•˜์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์žฌ์ •์˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

equals๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด์˜ ์ฃผ์†Œ๊ฐ’์ด ๋‹ค๋ฅด๋”๋ผ๋„ ์ด๋ฆ„์ด ๊ฐ™๋‹ค๋ฉด ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ฐ™์€ ๊ฐ์ฒด์ž„์„ ์ •์˜ํ–ˆ๊ณ , ์ด์™€ ์Œ์„ ์ด๋ฃจ๋Š” hashCode๋ฅผ ํ•จ๊ป˜ ์ˆ˜์ •ํ•˜์—ฌ ํ•ด์‹œ ๊ธฐ๋ฐ˜ ์ปฌ๋ ‰์…˜์—์„œ๋„ ์ด ๋™๋“ฑ์„ฑ์ด ์œ ์ง€๋˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ํ™œ์šฉํ•˜๋ฉด HashSet์ด๋‚˜ HashMap ๊ฐ™์€ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์˜๋„ํ•œ ๋Œ€๋กœ ์ค‘๋ณต์„ ์ž๋™์œผ๋กœ ๊ฑธ๋Ÿฌ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์—์„œ isEqualTo๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ํ•„๋“œ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ๋น„๊ตํ•˜์ง€ ์•Š๊ณ ๋„ ๊ฐ์ฒด ์ž์ฒด๋กœ ๋™๋“ฑ์„ฑ์„ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Comment on lines +191 to +192
3. ์„œ๋ธŒ ํƒ€์ž…, ๋‹ค์–‘ํ•œ ๊ตฌํ˜„์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
์„ธ๊ฐ€์ง€๋กœ ์ •๋ฆฌ๋ฅผ ํ–ˆ๊ณ  ์„ธ๊ฐ€์ง€ ์ด์œ ์— ์†ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š” ์ •์ ๋ฉ”์„œ๋“œ๋ณด๋‹ค ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ์ด ์ปค์กŒ์Šต๋‹ˆ๋‹ค.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ด๋Ÿฌํ•œ ๊ธฐ์ค€์„ ํ†ตํ•ด ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ •์  ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ •ํ•ด์ง€๋‚˜์š”?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋„ค ์ด๋Ÿฌํ•œ ๊ธฐ์ค€์œผ๋กœ ์ ์šฉ์„ ๊ณ ๋ คํ•˜๊ธฐ๋กœ ๊ฐœ์ธ์ ์œผ๋กœ ์ƒ๊ฐ์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
ํŠนํžˆ ํ˜„์žฌ๋Š” 1๋ฒˆ์—์„œ ๋งํ•œ ์ƒ์„ฑ์˜ ์˜๋„๋ฅผ ํ‘œํ˜„์— ๋Œ€ํ•ด์„œ ๊ฐ€์žฅ ํฐ ๋น„์ค‘์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
2, 3๋ฒˆ์€ ํ˜„์žฌ๊นŒ์ง€ ๊ฒฝํ—˜์„ ํ•ด๋ณธ ์ ์ด ์—†๋Š”๋ฐ ์ด๋ฒˆ ํŽ˜์–ด์˜ ์งˆ๋ฌธ์„ ํ†ตํ•ด ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ์•Œ๊ฒŒ ๋๋Š”๋ฐ ์ ์ ˆํ•œ ์ƒํ™ฉ์„ ์ธ์ง€ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋Š” ์•„์ง ํฐ ์ž์‹ ์€ ์—†์Šต๋‹ˆ๋‹ค ๐Ÿฅน

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ ์ ˆํ•œ ์ƒํ™ฉ์„ ์ธ์ง€ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋Š” ์•„์ง ํฐ ์ž์‹ ์€ ์—†์Šต๋‹ˆ๋‹ค ๐Ÿฅน

์ ์ ˆํ•˜์ง€ ์•Š์œผ๋ฉด ๋ญ ์–ด๋–ค๊ฐ€์š” ใ…Žใ…Ž ์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ๊ฒฝํ—˜ ์—†์ด๋Š” ์„ฑ์žฅ๋„ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ๊ฒ๋จน์ง€ ๋งˆ์‹œ๊ณ  ๋ฏธ์…˜ํ•˜๋ฉด์„œ ๋‹ค์–‘ํ•œ ์‹œ๋„๋„ ๋งŽ์ด ํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”.

- ๋„๋ฉ”์ธ(Rank, Suit, MatchResult ๋“ฑ)์—์„œ ๋ทฐ ์ถœ๋ ฅ์„ ์œ„ํ•œ ๋ฌธ์ž์—ด(String) ํ•„๋“œ ์ œ๊ฑฐ
- ์ถœ๋ ฅ ์ „์šฉ ์—ด๊ฑฐํ˜•(RankView, SuitView, MatchResultView) ๋„์ž…์œผ๋กœ View ์ฑ…์ž„ ์œ„์ž„
- ๋„๋ฉ”์ธ ๋‚ด๋ถ€์—์„œ DTO๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๊ณ , ์ปจํŠธ๋กค๋Ÿฌ ๊ฒฝ๊ณ„์—์„œ Response ๋ ˆ์ฝ”๋“œ๋กœ ๋งคํ•‘
- Score ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜(VO) ๋„์ž…์œผ๋กœ ์›์‹œ๊ฐ’ ํฌ์žฅ ๋ฐ ๋น„๊ต ์ฑ…์ž„ ์œ„์ž„
- GameController์˜ ๋“ค์—ฌ์“ฐ๊ธฐ Depth ์ˆ˜์ •
Copy link
Author

@miniminjae92 miniminjae92 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋งคํŠธ Summit์„ ํ•ด์•ผํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค.
์ด๋ฒˆ์— ๋˜ ๋ฐฐ์› ๋„ค์š”, ์ด๊ณณ์— ์ƒˆ๋กœ ๋ณด๋‚ผ PR์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์ ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๊ณ  ํŒ๋‹จ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค!

์ด๋ฒˆ์— ํ”ผ๋“œ๋ฐฑ ์ฃผ์‹  ๋ถ€๋ถ„๋“ค์„ ์ ์šฉํ•˜๋ฉด์„œ ๊ฐ€์žฅ ํฌ๊ฒŒ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„์€ dto๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด์„œ ๋„๋ฉ”์ธ๊ณผ ๋ทฐ์˜ ์˜์กด์„ฑ์„ ์—†์• ์•ผ๊ฒ ๋‹ค๊ณ  ๊ฒฐ์ •ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

๋„๋ฉ”์ธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” snapShot()์ด๋‚˜ toDto() ๋“ฑ์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ ์ด์œ ๋Š” ์ ˆ์ฐจ์ ์ธ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง, ์œ ์Šค์ผ€์ด์Šค๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ๋„๋ฉ”์ธ ์™ธ๋ถ€์—์„œ ์œ ์Šค์ผ€์ด์Šค์— ๋”ฐ๋ฅธ ๋ฐ์ดํ„ฐ ๊ฐ€๊ณต์„ ์ฃผ๋„ํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ์ƒ๊ฐ์ด ๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ Getter๋ฅผ ํ•˜๋Š”๋ฐ์— ์žˆ์–ด ๋ถˆ๋ณ€์„ฑ์„ ์ง€ํ‚ฌ๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ณ€์ˆ˜, ๋ฉ”์„œ๋“œ๋ช…์˜ ๊ฐ€๋…์„ฑ์„ ํ–ฅ์ƒ ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๋ณ€๊ฒฝ์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

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

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pull_request_template.md์˜ ์กด์žฌ ์ด์œ ๋ฅผ ๊นŠ์ด ๊ณ ๋ฏผํ•ด๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
์œ„ ํŒŒ์ผ ์ž์ฒด์— ์ œ ๊ฐœ์ธ์ ์ธ ์งˆ๋ฌธ์„ ๋‹ด๋Š” ๊ฒƒ์ด ํŒŒ์ผ์˜ ๋ชฉ์ (์–‘์‹ ์ œ๊ณต)์— ์–ด๊ธ‹๋‚œ๋‹ค๋Š” ์ ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ด PR ๋ณธ๋ฌธ์€ ์ œ ์ฝ”๋“œ๋ฅผ ๋งˆ์ฃผํ•  ๋ฆฌ๋ทฐ์–ด์— ๋Œ€ํ•œ '๋ฐฐ๋ ค๋ฅผ ๋‹ด๋Š” ๊ทธ๋ฆ‡'์ด๋ผ๋Š” ์ ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

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

์•ž์œผ๋กœ๋Š” ์ž‘์„ฑํ•ด์ฃผ์‹  ํ…œํ”Œ๋ฆฟ์˜ ์˜๋„๋ฅผ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜์—ฌ, ์ œ ๊ณ ๋ฏผ์˜ ๊ถค์ ์„ ์‰ฝ๊ฒŒ ๋”ฐ๋ผ์˜ค์‹ค ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Comment on lines +3 to +16
public record Card(Suit suit, Rank cardNumber) {
public boolean isAce() {
return this.cardNumber == Rank.ACE;
}

public String suitValue() {
return this.suit.getValue();
}

public String symbol() {
return this.cardNumber.getSymbol();
}

}
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ €๋Š” record๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ’ ์ž์ฒด๊ฐ€ ๊ทธ ๊ฐ์ฒด๋ฅผ ํ‘œํ˜„ํ•˜๋Š”๊ฐ€์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐ์„ ํ•ด๋ด…๋‹ˆ๋‹ค.
'๊ฐ™์€ ๋ฌด๋Šฌ, ๊ฐ™์€ ์ˆซ์ž๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์„ ๋•Œ ๊ฐ™์€ ์นด๋“œ์ธ๊ฐ€?'์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐํ•ด๋ดค๊ณ  ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ์— ๊ฐ™์€ ์นด๋“œ๊ฐ€ ๋งž๋‹ค๋ผ๋Š” ํŒ๋‹จ์ด ๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์— record๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์ œ๊ฐ€ ์•Œ๊ณ  ์žˆ์—ˆ๋˜ record์˜ ํŠน์„ฑ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ถˆ๋ณ€ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ํ•„๋“œ๊ฐ€ ์•”์‹œ์ ์œผ๋กœ final๋กœ ์„ ์–ธ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ•„๋“œ์— ๋Œ€ํ•œ ํ–‰๋™์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋กœ ์ธํ•ด ์œ ํšจ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๋“ฑ ํ™œ์šฉ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ œ๊ฑฐ ํšจ๊ณผ๋กœ ์ฝ”๋“œ์˜ ๊ฐ„๊ฒฐ์„ฑ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. equals, hashcode, getter, toString์„ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•„๋“œ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ค๋‹ˆ๋‹ค.

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

public record Hand(List<Card> cards) {
    public Hand {
        // ์ƒ์„ฑ ์‹œ์ ์— ์ฝ๊ธฐ ์ „์šฉ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ €์žฅ
        cards = List.copyOf(cards); 
    }
}

๋˜ํ•œ record์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ •ํ™•ํ•œ ์šฉ์–ด์— ๋Œ€ํ•ด์„œ๋„ ์ถ”๊ฐ€์ ์œผ๋กœ ์•Œ๊ฒŒ ๋์Šต๋‹ˆ๋‹ค.

  • Getter -> Accessor
  • ์ƒํƒœ -> ์ปดํฌ๋„ŒํŠธ
  • ์ƒ์„ฑ์ž -> ์ปดํŒฉํŠธ ์ƒ์„ฑ๏ฟฝ์ž

Comment on lines +6 to +21
public record CardDto(List<Card> cards) {

public String getFormattedCards() {
List<String> cardsResult = new ArrayList<>();
for (Card card : cards) {
String suit = card.suitValue();
String rank = card.symbol();
cardsResult.add(rank + suit);
}
return String.join(", ", cardsResult);
}

public int size() {
return cards().size();
}
}
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ œ๊ฐ€ ์ƒ๊ฐํ•˜๋Š” dto๋Š” ์ˆœ์ˆ˜ํ•œ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๊ฐ์ฒด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๋ชฉ์ ์€ ํ•ต์‹ฌ ๊ฐ์ฒด๊ฐ€ ์ž์œจ์ ์œผ๋กœ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์บก์Аํ™”๋ฅผ ์ง€์ผœ์ฃผ์–ด ๋ณ€๊ฒฝ์ด ์ƒ๊ฒผ์„ ๋•Œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ ๊ฐ์ฒด์™€์˜ ์˜์กด์„ฑ์ด ์ƒ๊ธฐ์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํ•„๋“œ๋กœ๋Š” ์›์‹œํƒ€์ž… ์‚ฌ์šฉ์„ ์ง€ํ–ฅํ•˜๋ฉฐ ๋กœ์ง์„ ๊ฐ€์ง€์ง€ ์•Š๋Š” ์ˆœ์ˆ˜ํ•œ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์— ์ง‘์ค‘ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Comment on lines +4 to +16
TWO(2, "2"),
THREE(3, "3"),
FOUR(4, "4"),
FIVE(5, "5"),
SIX(6, "6"),
SEVEN(7, "7"),
EIGHT(8, "8"),
NINE(9, "9"),
TEN(10, "10"),
JACK(10, "J"),
QUEEN(10, "Q"),
KING(10, "K"),
ACE(11, "A"),
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment on lines +8 to +14
private final Name name;
private final Hand hand;

protected Participant(Name name) {
this.hand = new Hand();
this.name = name;
}
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

private๊ฐ€ ์ง€ํ–ฅํ•˜๋Š” ๋ชฉ์ ์€ ๋‚ด๋ถ€ ๊ตฌํ˜„์˜ ์€๋‹‰์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์ƒํƒœ๋Š” ์ˆจ๊ธฐ๊ณ  ํ–‰์œ„๋ฅผ ๋ณด์—ฌ์ฃผ๋ฉด์„œ How๋ฅผ ์ˆจ๊ธฐ๊ณ  What์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ ๊ตฌํ˜„์˜ ๋ณ€๊ฒฝ์ด ์ž์œ ๋กœ์›Œ์ง€๋Š” ์žฅ์ ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๋…ธ์ถœ์— ๊ด€ํ•ด์„œ๋Š” ์–ด๋–ค ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€์— ๋Œ€ํ•ด์„œ๋„ ๋ชจ๋ฅด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ๋А๊ผˆ์Šต๋‹ˆ๋‹ค.
๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ƒํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ๋„ ๋ณ€ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
protected๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์ง์ ‘ ์Šˆํผํด๋ž˜์Šค์˜ ์ƒํƒœ๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉด์„œ ๊ตฌํ˜„์— ๋Œ€ํ•œ ๊ฐ•ํ•œ ๊ฒฐํ•ฉ์ด ์ƒ๊ธธ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜์–ด ์›ํ•˜๋Š” ๊ฐ€์‹œ์„ฑ์„ ์–ป๊ธฐ ํž˜๋“ค๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ธŒ ํด๋ž˜์Šค๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์ด ์žˆ์„ ๋•Œ ํ–‰์œ„์ธ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ์–ป๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ฒŒ ๋์Šต๋‹ˆ๋‹ค.

import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;

public class HandTest {
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

๋‹จ์ผ ์ฑ…์ž„์—์„œ ๋„์ถœ๋œ ๊ฐ์ฒด๊ฐ„์˜ ํ˜‘๋ ฅ ๋ฉ”์‹œ์ง€, ํผ๋ธ”๋ฆญ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ด ๋‹จ์œ„ํ…Œ์ŠคํŠธ๋ผ๊ณ  ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค.
์ฆ‰, ์™ธ๋ถ€ ์˜์กด์„ฑ์„ ์ œ๊ฑฐํ•œ Tell, Don't Ask์—์„œ ๋งํ•˜๋Š” Tell์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹๊นŒ ์‹ถ์Šต๋‹ˆ๋‹ค.

ํ†ตํ•ฉํ…Œ์ŠคํŠธ๋Š” ํ˜„์žฌ ํ”„๋กœ๊ทธ๋žจ, ํ”„๋กœ์„ธ์Šค ์ด์™ธ์˜ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€์˜ ํ˜‘๋ ฅ๊นŒ์ง€ ํ•จ๊ป˜ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.


๋ธ”๋ž™์žญ ๋ฏธ์…˜ ์ €์žฅ์†Œ

## ๊ธฐ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ž‘์€ ๋‹จ์œ„์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ƒ๊ฐํ•˜๊ณ  ์˜์กด์„ฑ์ด ๊ฐ€์žฅ ์—†์–ด ๋ณด์ด๋Š” ์ž‘์€ ๊ฐ์ฒด๋ถ€ํ„ฐ TDD ํ•ด๋ณด์ž๋Š” ์ƒ๊ฐ์„ ๋•๋ถ„์— ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!

Comment on lines +191 to +192
3. ์„œ๋ธŒ ํƒ€์ž…, ๋‹ค์–‘ํ•œ ๊ตฌํ˜„์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
์„ธ๊ฐ€์ง€๋กœ ์ •๋ฆฌ๋ฅผ ํ–ˆ๊ณ  ์„ธ๊ฐ€์ง€ ์ด์œ ์— ์†ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š” ์ •์ ๋ฉ”์„œ๋“œ๋ณด๋‹ค ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ์ด ์ปค์กŒ์Šต๋‹ˆ๋‹ค.
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋„ค ์ด๋Ÿฌํ•œ ๊ธฐ์ค€์œผ๋กœ ์ ์šฉ์„ ๊ณ ๋ คํ•˜๊ธฐ๋กœ ๊ฐœ์ธ์ ์œผ๋กœ ์ƒ๊ฐ์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
ํŠนํžˆ ํ˜„์žฌ๋Š” 1๋ฒˆ์—์„œ ๋งํ•œ ์ƒ์„ฑ์˜ ์˜๋„๋ฅผ ํ‘œํ˜„์— ๋Œ€ํ•ด์„œ ๊ฐ€์žฅ ํฐ ๋น„์ค‘์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
2, 3๋ฒˆ์€ ํ˜„์žฌ๊นŒ์ง€ ๊ฒฝํ—˜์„ ํ•ด๋ณธ ์ ์ด ์—†๋Š”๋ฐ ์ด๋ฒˆ ํŽ˜์–ด์˜ ์งˆ๋ฌธ์„ ํ†ตํ•ด ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ์•Œ๊ฒŒ ๋๋Š”๋ฐ ์ ์ ˆํ•œ ์ƒํ™ฉ์„ ์ธ์ง€ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋Š” ์•„์ง ํฐ ์ž์‹ ์€ ์—†์Šต๋‹ˆ๋‹ค ๐Ÿฅน

Comment on lines +17 to +27
public static Deck create() {
List<Card> cards = new ArrayList<>();

for (Suit suit : Suit.values()) {
for (Rank cardNumber : Rank.values()) {
cards.add(new Card(suit, cardNumber));
}
}

return new Deck(cards);
}
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ฒ˜์Œ์—๋Š” ์ด์ค‘ for๋ฌธ์ด ๊ฐ€๋…์„ฑ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ–ˆ๋Š”๋ฐ ์ œ ๊ฐœ์ธ์ ์ธ ์ฃผ๊ด€์ด ๋งŽ์ด ๋“ค์–ด๊ฐ„ ๊ฒƒ์ด๋ผ ๋งคํŠธ์˜ ์˜๊ฒฌ๋„ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์š”๊ตฌ ์‚ฌํ•ญ์„ ์ง€ํ‚ฌ ๋•Œ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ๋– ์˜ฌ๋ž์Šต๋‹ˆ๋‹ค.
์œ„ ์ฒ˜๋Ÿผ ์ŠคํŠธ๋ฆผ์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ์ค‘์ฒฉ๋œ for ๋ฌธ๋งŒ ๋ฉ”์„œ๋“œ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.
flatMap์„ ์ด์šฉํ•œ ์ด์ค‘ ์ŠคํŠธ๋ฆผ์ด ํ•œ๋ˆˆ์— ๋“ค์–ด์™€์„œ ๋” ๊ฐ€๋…์„ฑ์ด ๋‚ซ๋‹ค๊ณ  ๋А๊ผˆ๋Š”๋ฐ ๊ดœ์ฐฎ์„๊นŒ์š”?

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

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

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ํ•œ ๊ฐ€์ง€ ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค ๋งคํŠธ!

์ƒˆ๋กญ๊ฒŒ ํ’€๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋ณด๋ƒˆ์„ ๋•Œ PR ๋ณธ๋ฌธ์„ ์ƒˆ๋กญ๊ฒŒ ์ˆ˜์ •ํ•ด๋„ ๋˜๋Š”์ง€, ์ข‹์€ ๋ฐฉ๋ฒ•์ธ๊ฑด์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์ƒˆ๋กญ๊ฒŒ ๋ณธ๋ฌธ์„ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ๋งž๋Š”๊ฑฐ๋ผ๋ฉด ์ด๋ฒˆ์— ๋ณ€๊ฒฝ์‚ฌํ•ญ๋“ค์— ๋Œ€ํ•ด์„œ ํ•ต์‹ฌ ์š”์•ฝ์„ ํ•˜๊ณ  ๊ทธ๊ฒƒ๋“ค์— ๋Œ€ํ•œ ๊ทผ๊ฑฐ๋“ค์„ ์ž‘์„ฑํ•˜๋Š” ์ •๋„๋ฉด ๊ดœ์ฐฎ์„๊นŒ์š”?

Copy link

@hyeonic hyeonic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์•ˆ๋…•ํ•˜์„ธ์š” ๊ณ ๋ž˜~ ๋ฆฌ๋ทฐ ๋ฐ˜์˜๋„ ์ž˜ ํ•ด์ฃผ์‹œ๊ณ  ์š”๊ตฌ์‚ฌํ•ญ๋„ ๋Œ€๋ถ€๋ถ„ ๋งŒ์กฑํ•˜์—ฌ์„œ ์‚ฌ์ดํด1์€ ๋จธ์ง€ํ•ด๋„ ๋  ๊ฒƒ ๊ฐ™์•„์š” ใ…Žใ…Ž

์ดํ›„ ๋ฏธ์…˜ ์ง„ํ–‰ํ•˜๋ฉฐ ์ข€ ๋” ์ด์•ผ๊ธฐ ๋‚˜๋ˆ„๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค! ๊ถ๊ธˆํ•˜๊ฑฐ๋‚˜ ๋†“์นœ ์งˆ๋ฌธ ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“  ํŽธํ•˜๊ฒŒ ๋””์—  ์ฃผ์„ธ์š”~

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

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

@hyeonic hyeonic Mar 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR ํ…œํ”Œ๋ฆฟ์€ ๊ทธ๋ƒฅ ๋‹จ์ˆœํžˆ ๊ฐ€์ด๋“œ๋ฅผ ์ œ๊ณต ํ•ด์ค„๋ฟ์ž…๋‹ˆ๋‹ค ใ…Žใ…Ž ๊ณ ๋ž˜๊ฐ€ ์ƒ๊ฐ ํ–ˆ์„ ๋•Œ ์ถ”๊ฐ€์ ์ธ ๋‚ด์šฉ์ด ํ•„์š”ํ•˜๋‹ค ํŒ๋‹จํ•˜๋ฉด ์ž์œ ๋กญ๊ฒŒ ์ž‘์„ฑํ•ด๋„ ๊ดœ์ฐฎ์•„์š”.

๋‹ค๋งŒ ์ฝ”๋“œ ๊ด€๋ จ ์งˆ๋ฌธ์ด๋ผ๋ฉด ์ฝ”๋“œ ๋ฒ ์ด์Šค์— ์ฝ”๋ฉ˜ํŠธ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ ์ฃผ์‹œ๋Š”๊ฒŒ ์ „์ฒด์ ์ธ ๋งฅ๋ฝ์„ ํŒŒ์•…ํ•˜๋Š”๋ฐ ๋” ์šฉ์ดํ•  ๊ฒƒ ๊ฐ™์•„์š”.

Comment on lines +8 to +14
private final Name name;
private final Hand hand;

protected Participant(Name name) {
this.hand = new Hand();
this.name = name;
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

protected๋Š” ๋ง์”€ ์ฃผ์‹  ๊ฒƒ ์ฒ˜๋Ÿผ ๊ฐ•ํ•œ ๊ฒฐํ•ฉ์ด ์ƒ๊ธฐ๋Š” ๋“ฏ ๋ณด์ด๊ธฐ๋„ ํ•˜์ง€๋งŒ ๊ทธ๋ ‡๋‹ค๊ณ  ์ƒ์†์„ ์™„์ „ํžˆ ๋ฐฐ์ œํ•  ํ•„์š˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ด์š”. ์ƒ์†์ด๋˜ ์กฐํ•ฉ์ด๋˜ ๊ฐ๊ฐ์˜ ๋งž๋Š” ์ƒํ™ฉ์— ์ถฉ๋ถ„ํžˆ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ์— ์™„์ „ ๋ฐฐ์ œํ•˜๊ธฐ ๋ณด๋‹จ ์ง์ ‘ ์‚ฌ์šฉํ•ด๋ณด๋ฉฐ ๋А๋‚€ ์žฅ๋‹จ์ ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์•ž์œผ๋กœ์˜ ์„ ํƒ์„ ์ง„ํ–‰ํ•  ๋•Œ ์–‘๋ถ„์œผ๋กœ ์‚ผ์•„๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š” ใ…Žใ…Ž

import java.util.List;
import java.util.Set;

public class Players implements Iterable<Player> {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋„ค ์ข‹์Šต๋‹ˆ๋‹ค. Iterable ๋‚ด์—์„œ ์ œ๊ณตํ•˜๋Š” ์ŠคํŽ™์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ์‚ฌ์šฉํ•ด๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”. ๋‹ค๋งŒ ํ•œ ๊ฐ€์ง€ ์ถ”๊ฐ€์ ์œผ๋กœ ๊ณ ๋ คํ•ด์•ผ ํ•  ๋ถ€๋ถ„์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค๋Š” ๊ฑด ํ•ด๋‹น ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ๋ช…์‹œํ•œ ์ŠคํŽ™์„ ๋”ฐ๋ผ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๊ธฐ๋„ ํ•ด์š”. ๊ฐ€๋ น Iterable์„ ๋ฉ”์„œ๋“œ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณผ๊ฒŒ์š”. ๋งŒ์•ฝ ๊ณ ๋ž˜๊ฐ€ overrideํ•œ ํ•จ์ˆ˜๊ฐ€ ์˜๋„์™€ ๋‹ค๋ฅด๊ฒŒ ๊ตฌํ˜„๋˜์—ˆ๋‹ค๋ฉด ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ๋œ ๋ฉ”์„œ๋“œ๋Š” ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜์—ˆ์Œ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ์ด๋Ÿฐ ๋ถ€๋ถ„๋“ค์„ ๊นŒ์ง€ ์ž˜ ์œ ์˜ํ•ด์„œ ๊ตฌ์„ฑํ•˜๋ฉด ์ถฉ๋ถ„ํžˆ ์‚ฌ์šฉํ•ด๋„ ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค ๐Ÿ‘

Comment on lines +17 to +27
public static Deck create() {
List<Card> cards = new ArrayList<>();

for (Suit suit : Suit.values()) {
for (Rank cardNumber : Rank.values()) {
cards.add(new Card(suit, cardNumber));
}
}

return new Deck(cards);
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋‘˜ ๋‹ค ๊ฐ€๋…์„ฑ ์ธก๋ฉด์ด๋ผ ํฌ๊ฒŒ ์ƒ๊ด€์€ ์—†์–ด๋ณด์—ฌ์š”. ์—ฌ๋Ÿฌ ํŒ€์›๊ณผ ํ•จ๊ป˜ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ผ๋ฉด ์ผ์ข…์˜ ๋ฃฐ๋งŒ ์ง€ํ‚ค๋ฉด ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ Stream์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ํŠน์„ฑ์„ ์ž˜ ์•Œ๊ณ  ์“ฐ๋Š”๊ฒŒ ๋” ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ด์š” ใ…Žใ…Ž

import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;

public class HandTest {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

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

Comment on lines +191 to +192
3. ์„œ๋ธŒ ํƒ€์ž…, ๋‹ค์–‘ํ•œ ๊ตฌํ˜„์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
์„ธ๊ฐ€์ง€๋กœ ์ •๋ฆฌ๋ฅผ ํ–ˆ๊ณ  ์„ธ๊ฐ€์ง€ ์ด์œ ์— ์†ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š” ์ •์ ๋ฉ”์„œ๋“œ๋ณด๋‹ค ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ์ด ์ปค์กŒ์Šต๋‹ˆ๋‹ค.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ ์ ˆํ•œ ์ƒํ™ฉ์„ ์ธ์ง€ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋Š” ์•„์ง ํฐ ์ž์‹ ์€ ์—†์Šต๋‹ˆ๋‹ค ๐Ÿฅน

์ ์ ˆํ•˜์ง€ ์•Š์œผ๋ฉด ๋ญ ์–ด๋–ค๊ฐ€์š” ใ…Žใ…Ž ์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ๊ฒฝํ—˜ ์—†์ด๋Š” ์„ฑ์žฅ๋„ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ๊ฒ๋จน์ง€ ๋งˆ์‹œ๊ณ  ๋ฏธ์…˜ํ•˜๋ฉด์„œ ๋‹ค์–‘ํ•œ ์‹œ๋„๋„ ๋งŽ์ด ํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”.

@hyeonic hyeonic merged commit c6b9d90 into woowacourse:miniminjae92 Mar 11, 2026
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.

2 participants