[๐ ์ฌ์ดํด1 - ๋ฏธ์ (๋ธ๋์ญ ๊ฒ์ ์คํ)] ๊ณ ๋ ๋ฏธ์ ์ ์ถํฉ๋๋ค.#1028
[๐ ์ฌ์ดํด1 - ๋ฏธ์
(๋ธ๋์ญ ๊ฒ์ ์คํ)] ๊ณ ๋ ๋ฏธ์
์ ์ถํฉ๋๋ค.#1028hyeonic merged 32 commits intowoowacourse:miniminjae92from
Conversation
hyeonic
left a comment
There was a problem hiding this comment.
์๋ ํ์ธ์ ๊ณ ๋~ ๋ธ๋์ญ ๋ฆฌ๋ทฐ๋ฅผ ๋งก์ ๋งคํธ์ ๋๋ค!
์ง๋ฌธ ์ฃผ์ ๋ถ๋ถ์ ํฌํจํ์ฌ ๊ฐ๋จํ ์ฝ๋ฉํธ ๋จ๊ฒผ์ต๋๋ค. ํ์ธํด์ฃผ์๊ณ ๋์น ๋ถ๋ถ ์๋ค๋ฉด ํธํ๊ฒ ๋์ ํน์ ์ฝ๋ฉํธ ๋จ๊ฒจ์ฃผ์ธ์!
์๋๋ ์ฝ๋ ๋ ๋ฒจ์์ ๋จ๊ธฐ๊ธฐ ์ด๋ ค์ด ๋ถ๋ถ์ด๋ผ ๋ฐ๋ก ์ ๋ฆฌํ์์ด์.
๊ฐ๋ ์ฑ์ด ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค, ๋ถ์กฑํ ๋ถ๋ถ์ด ๋ง์๋ฐ ๊ฐ๋ ์ฑ์ด ๋ถ์กฑํ ๋ถ๋ถ๋ค์ ๋ํด์ ์๊ณ ์ถ์ต๋๋ค.
์ด๋ฆ์ ์ง๋ ๊ฒ์ด ๋๋ฌด ์ด๋ ค์ด๋ฐ ์ข์ ๋ฐฉ๋ฒ์ ๋ง์ ์ฝ๋๋ฅผ ๋ณด๋ ๊ฒ์ด๋ผ ์๊ฐํ๋๋ฐ ๋ค๋ฅธ ์ข์ ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด ์๊ณ ์ถ์ต๋๋ค.
๊ฐ๋ ์ฑ์ด ์ข๋ค๋ ๊ฑด ๊ฒฐ๊ตญ ๋๊ตฌ๋ ์ฝ๊ธฐ ์ฝ๊ณ ํด์ํ๊ธฐ ์ฉ์ดํ ํํ๋ฅผ ๋งํ๋ ๊ฑฐ๊ฒ ์ฃ ? ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ณ ๋ คํด๋ณผ ์ ์๋ ๊ฑด ์ด๋ฏธ ์๋ ๋์ ํน์ ์ธ์ด๋ฅผ ์ฌ๋ฌ ์ฌ๋์ด ์ฌ์ฉํด์ค๋ฉฐ ์ ๋ฆฌ๋ ์ปจ๋ฒค์ ์ ๋ฐ๋ฅด๋ ๊ฒ ๊ฐ์์. ์ด๋ฅผ ํตํด ์ถ์ ๋ ๋ ธํ์ฐ๋ฅผ ๋ฐฐ์ธ ์ ์์ ๋ฟ๋ง ์๋๋ผ ์ฝ๋์ ์ผ๊ด์ฑ ์์ฒด๋ฅผ ๋ฌ์ฑํ ์ ์์ผ๋๊น์. ๊ทธ ๋ฐ์๋ ๋ค๋ฅธ ์ฌ๋์ด ์์ฑํ ์ฝ๋๋ฅผ ์ง์ ์ฝ์ด๋ณด๋ฉฐ ์ ์ฝํ๋ ์ฝ๋๋ ํจํด์ ๊ธฐ์ตํด๋๋ ๋ฑ ์ฌ๋ฌ ๋ฐฉ์์ ํตํด ๋ณด์ํ ์ ์์ ๊ฒ ๊ฐ์์!
์ด๋ฆ ์ง๋ ๊ฒ ๋ํ ๋น์ทํ ๋งฅ๋ฝ์ผ๋ก ํตํ ๊ฒ ๊ฐ์์. ์ ๋ ๋ณดํต ํ๋ ์์ํฌ๋ ์ฌ๋ฌ ์ฌ๋์ด ๊ธฐ์ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ดํด๋ณด๋ฉฐ ์ ์ ํ ๋ค์ด๋ฐ ๋ฐฉ์์ ์ฐธ๊ณ ํ๊ธฐ๋ ํฉ๋๋ค.
๋ฎ์ ๊ฒฐํฉ๋์ ๋์ ์์ง๋๋ฅผ ๊ฐ์ง๊ณ ์ถ์๋ฐ ๊ตฌ์ฒด์ ์ธ ๋ฐฉ๋ฒ๊ณผ ๊ฒฝํ์ ๋ง์ด ์๊ณ ์ถ์ต๋๋ค.
์ ๋ฎ์ ๊ฒฐํฉ๋์ ๋์ ์์ง๋๊ฐ ํ์ํ ๊น์? ๋จผ์ ๊ณ ๋๊ฐ ์ด๋ฌํ ๋ฐฉ๋ฒ๊ณผ ๊ฒฝํ์ ๊ฐ์ง๊ณ ์ถ๋ค๊ณ ํ๋๋ฐ ๋ฌ์ฑํ์ง ๋ชปํ์ ๋ ์ด๋ค ๋จ์ ์ ๋๋ผ์ จ๋์?
| - [x] Gradle `test`๋ฅผ ์คํํ์ ๋, ๋ชจ๋ ํ ์คํธ๊ฐ ์ ์์ ์ผ๋ก ํต๊ณผํ๋์? | ||
| - [x] ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์์ ์ผ๋ก ์คํ๋๋์? | ||
|
|
||
| ## ์ด๋ค ๋ถ๋ถ์ ์ง์คํ์ฌ ๋ฆฌ๋ทฐํด์ผ ํ ๊น์? |
There was a problem hiding this comment.
pull_request_template.md๋ ์ด๋ค ์ญํ ์ ํ์ผ์ธ๊ฐ์?? ์ญํ ์ ๋ง๋ ๋ด์ฉ์ ๊ธฐ์
ํ์๋ค๊ณ ๋ณผ ์ ์์๊น์??
There was a problem hiding this comment.
pull_request_template.md์ ์กด์ฌ ์ด์ ๋ฅผ ๊น์ด ๊ณ ๋ฏผํด๋ณด์ง ๋ชปํ์ต๋๋ค.
์ ํ์ผ ์์ฒด์ ์ ๊ฐ์ธ์ ์ธ ์ง๋ฌธ์ ๋ด๋ ๊ฒ์ด ํ์ผ์ ๋ชฉ์ (์์ ์ ๊ณต)์ ์ด๊ธ๋๋ค๋ ์ ์ ๊นจ๋ฌ์์ต๋๋ค.
๋ํ ์ด PR ๋ณธ๋ฌธ์ ์ ์ฝ๋๋ฅผ ๋ง์ฃผํ ๋ฆฌ๋ทฐ์ด์ ๋ํ '๋ฐฐ๋ ค๋ฅผ ๋ด๋ ๊ทธ๋ฆ'์ด๋ผ๋ ์ ์ ๊นจ๋ฌ์์ต๋๋ค.
๋จ์ํ ๊ธฐ๋ก์ ๋์ด, ์ด๋ฒ ์์ ์ ํต์ฌ ์์ฝ๊ณผ ๊ตฌ์ฒด์ ์ธ ๋ณ๊ฒฝ ์ฌํญ, ๊ทธ๋ฆฌ๊ณ ์ ๊ฐ ์ค์ํ๊ฒ ๊ณ ๋ฏผํ๋ ์ค๊ณ ํฌ์ธํธ๋ฅผ ๋ช ํํ ์ ๋ฌํ์ฌ ๋ฆฌ๋ทฐ์ด์ ์๊ฐ์ ์๋ผ๊ณ ๊น์ด ์๋ ์ํต์ ํ๊ธฐ ์ํ ๋๊ตฌ์์ ๋ฐฐ์ ์ต๋๋ค.
์์ผ๋ก๋ ์์ฑํด์ฃผ์ ํ ํ๋ฆฟ์ ์๋๋ฅผ ์ ํํ ํ์ ํ์ฌ, ์ ๊ณ ๋ฏผ์ ๊ถค์ ์ ์ฝ๊ฒ ๋ฐ๋ผ์ค์ค ์ ์๋๋ก ์์ฑํ๊ฒ ์ต๋๋ค.
There was a problem hiding this comment.
ํ ๊ฐ์ง ๊ถ๊ธํ ์ ์ด ์์ต๋๋ค ๋งคํธ!
์๋กญ๊ฒ ํ๋ฆฌํ์คํธ๋ฅผ ๋ณด๋์ ๋ PR ๋ณธ๋ฌธ์ ์๋กญ๊ฒ ์์ ํด๋ ๋๋์ง, ์ข์ ๋ฐฉ๋ฒ์ธ๊ฑด์ง ๊ถ๊ธํฉ๋๋ค.
๋ง์ฝ ์๋กญ๊ฒ ๋ณธ๋ฌธ์ ์์ ํ๋ ๊ฒ์ด ๋ง๋๊ฑฐ๋ผ๋ฉด ์ด๋ฒ์ ๋ณ๊ฒฝ์ฌํญ๋ค์ ๋ํด์ ํต์ฌ ์์ฝ์ ํ๊ณ ๊ทธ๊ฒ๋ค์ ๋ํ ๊ทผ๊ฑฐ๋ค์ ์์ฑํ๋ ์ ๋๋ฉด ๊ด์ฐฎ์๊น์?
There was a problem hiding this comment.
PR ํ ํ๋ฆฟ์ ๊ทธ๋ฅ ๋จ์ํ ๊ฐ์ด๋๋ฅผ ์ ๊ณต ํด์ค๋ฟ์ ๋๋ค ใ ใ ๊ณ ๋๊ฐ ์๊ฐ ํ์ ๋ ์ถ๊ฐ์ ์ธ ๋ด์ฉ์ด ํ์ํ๋ค ํ๋จํ๋ฉด ์์ ๋กญ๊ฒ ์์ฑํด๋ ๊ด์ฐฎ์์.
๋ค๋ง ์ฝ๋ ๊ด๋ จ ์ง๋ฌธ์ด๋ผ๋ฉด ์ฝ๋ ๋ฒ ์ด์ค์ ์ฝ๋ฉํธ๋ฅผ ํตํด ์ ๋ฌ ์ฃผ์๋๊ฒ ์ ์ฒด์ ์ธ ๋งฅ๋ฝ์ ํ์ ํ๋๋ฐ ๋ ์ฉ์ดํ ๊ฒ ๊ฐ์์.
| 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(); | ||
| } | ||
| } |
There was a problem hiding this comment.
๊ณ ๋๊ฐ ์๊ฐํ๋ dto๋ ๋ฌด์์ด๋ฉฐ ์ด๋ ํ ๋ชฉ์ ์ผ๋ก ํ์ฉํ๋ฉด ์ข์๊น์?
There was a problem hiding this comment.
์ ๊ฐ ์๊ฐํ๋ dto๋ ์์ํ ๋ฐ์ดํฐ ์ ๋ฌ ๊ฐ์ฒด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ชฉ์ ์ ํต์ฌ ๊ฐ์ฒด๊ฐ ์์จ์ ์ผ๋ก ์กด์ฌํ ์ ์๋๋ก ์บก์ํ๋ฅผ ์ง์ผ์ฃผ์ด ๋ณ๊ฒฝ์ด ์๊ฒผ์ ๋ ์ ๋ณด๋ฅผ ์ ๊ณตํ ๊ฐ์ฒด์์ ์์กด์ฑ์ด ์๊ธฐ์ง ์๋๋ก ํ๋ ๊ฒ์ด ๋ชฉ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ๋๋ก๋ ์์ํ์
์ฌ์ฉ์ ์งํฅํ๋ฉฐ ๋ก์ง์ ๊ฐ์ง์ง ์๋ ์์ํ ๋ฐ์ดํฐ ์ ๋ฌ์ ์ง์คํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
src/main/java/domain/card/Card.java
Outdated
| 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(); | ||
| } | ||
|
|
||
| } |
There was a problem hiding this comment.
record๋ฅผ ํ์ฉํ์๋ค์! ์ด๋ ํ ํน์ฑ ๋๋ฌธ์ ํ์ฉํ์์๊น์??
There was a problem hiding this comment.
์ ๋ record๋ฅผ ์ฌ์ฉํ ๋ ๊ฐ์ง๊ณ ์๋ ๊ฐ ์์ฒด๊ฐ ๊ทธ ๊ฐ์ฒด๋ฅผ ํํํ๋๊ฐ์ ๋ํด์ ์๊ฐ์ ํด๋ด
๋๋ค.
'๊ฐ์ ๋ฌด๋ฌ, ๊ฐ์ ์ซ์๋ฅผ ๊ฐ์ง๊ณ ์์ ๋ ๊ฐ์ ์นด๋์ธ๊ฐ?'์ ๋ํด์ ์๊ฐํด๋ดค๊ณ ๊ทธ๋ฐ ๊ฒฝ์ฐ์ ๊ฐ์ ์นด๋๊ฐ ๋ง๋ค๋ผ๋ ํ๋จ์ด ๋ค์๊ธฐ ๋๋ฌธ์ record๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
์ ๊ฐ ์๊ณ ์์๋ record์ ํน์ฑ์ ์๋์ ๊ฐ์ต๋๋ค.
๊ฐ์ง๊ณ ์๋ ์ํ๋ฅผ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ๋ถ๋ณ ๊ฐ์ฒด์
๋๋ค. ๊ทธ ์ด์ ๋ ํ๋๊ฐ ์์์ ์ผ๋ก final๋ก ์ ์ธ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
๊ฐ์ง๊ณ ์๋ ํ๋์ ๋ํ ํ๋์ ๊ฐ์ง ์ ์์ต๋๋ค. ๊ทธ๋ก ์ธํด ์ ํจ์ฑ์ ๋ณด์ฅํ๋ ๋ฑ ํ์ฉ์ ํ ์ ์์ต๋๋ค.
๋ณด์ผ๋ฌํ๋ ์ดํธ ์ ๊ฑฐ ํจ๊ณผ๋ก ์ฝ๋์ ๊ฐ๊ฒฐ์ฑ์ ๊ฐ์ง ์ ์์ต๋๋ค. equals, hashcode, getter, toString์ ์ปดํ์ผ๋ฌ๊ฐ ํ๋ ๊ธฐ๋ฐ์ผ๋ก ์๋์ผ๋ก ์์ฑํด์ค๋๋ค.
์ถ๊ฐ์ ์ผ๋ก ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ์๊ฒ ๋ ์ ์ด ์์ต๋๋ค. ์ ๋ ์ปฌ๋ ์
์ ํ๋๋ก ๊ฐ์ง์ง ๋ชปํ๋ ์ค ์์์ต๋๋ค. ํ์ง๋ง ๊ทธ์ ์์ ๋ถ๋ณ์ฑ๋ง ์ ๊ณตํ๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ record์์ ์ปฌ๋ ์
์ ์์ ํ๊ฒ ๋ค๋ฃจ๋ ค๋ฉด ์๋์ ์ฝ๋์ฒ๋ผ ์ฒ๋ฆฌ ํด์ผ ํ๋ค๋ ์ ์ ์๊ฒ ๋์์ต๋๋ค.
public record Hand(List<Card> cards) {
public Hand {
// ์์ฑ ์์ ์ ์ฝ๊ธฐ ์ ์ฉ ๋ฆฌ์คํธ๋ก ๋ณํํ์ฌ ์ ์ฅ
cards = List.copyOf(cards);
}
}
๋ํ record์์ ์ฌ์ฉํ๋ ์ ํํ ์ฉ์ด์ ๋ํด์๋ ์ถ๊ฐ์ ์ผ๋ก ์๊ฒ ๋์ต๋๋ค.
- Getter -> Accessor
- ์ํ -> ์ปดํฌ๋ํธ
- ์์ฑ์ -> ์ปดํฉํธ ์์ฑ๏ฟฝ์
There was a problem hiding this comment.
์ ๊ฐ ์๊ฐํ ๊ฒ ๋ณด๋ค ๋ ๊ผผ๊ผผํ๊ฒ ํ์ตํ์๋ค์ ๐
| import java.util.List; | ||
| import java.util.Set; | ||
|
|
||
| public class Players implements Iterable<Player> { |
There was a problem hiding this comment.
์ผ๊ธ ์ปฌ๋ ์ ์ ์ํํ ์ ์๋๋ก ์ดํฐ๋ฌ๋ธ์ ๊ตฌํํ๋ฉด ์๋๋ ๊ฒ์ธ์ง ๊ถ๊ธํฉ๋๋ค.
๋จผ์ ๊ณ ๋์ ์๋๋ฅผ ๋ค์ด๋ณด๊ณ ํ๋จํด๋ด๋ ์ข์ ๊ฒ ๊ฐ์์ ใ ใ
- ๊ณ ๋๊ฐ ์๊ฐํ๋ ์ผ๊ธ์ปฌ๋ ์ ์ ๋ฌด์์ด๋ฉฐ ์ ํ์ํ ๊น์?
- Iterable๊ณผ ๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ณ ์ ํ ํ๋จ ๊ธฐ์ค์ ๋ฌด์์ธ๊ฐ์?
There was a problem hiding this comment.
์ ๊ฐ ์๊ฐํ๋ ์ผ๊ธ์ปฌ๋ ์ ์ ๋์ผํ ๊ฐ์ฒด๋ค์ ๋ชจ์ ์ปฌ๋ ์ ๊ณผ ๊ด๋ จ๋ ๋น์ฆ๋์ค ๋ก์ง์ ์์ง๋ ์๊ฒ ๋ชจ์์ฃผ๊ณ ์บก์ํ๋ฅผ ํด์ฃผ๊ธฐ ๋๋ฌธ์ ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
Iterable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ณ ์ ํ๋จํ ๊ธฐ์ค์ ๊ฐ ํ๋ ์ด์ด๋ง๋ค ์ฌ์ฉ์ ์
๋ ฅ์ ๋ฐ์ ํ ๊ทธ ์
๋ ฅ์ ๋ฐ๋ฅธ ์ฒ๋ฆฌ๋ฅผ ํด์ผํ๋๋ฐ ์ผ๊ธ์ปฌ๋ ์
์๊ฒ ์์์ ํ๋ฉด ์ผ๊ธ์ปฌ๋ ์
๋ด์์ ๋ทฐ์์ ์์กด์ด ์๊ธธ ๊ฒ์ผ๋ก ์๊ฐํด์ ๋ฐ์์ ์ํํ ์ ์๋๋ก ํ์ต๋๋ค.
๋๋ต์ ํ๋ฉด์ ๋ ์๊ฐ์ ๋
ธ์ถ๋ player๋ฅผ ํตํด์ ์๋์น ์์ ๋์์ด ๋ฐ์ํ ์ ์๋๋ก ํ ์ ์๋ค๋ฉด Iterable์ ์ฌ์ฉํด๋ ๊ด์ฐฎ์ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
There was a problem hiding this comment.
๋ค ์ข์ต๋๋ค. Iterable ๋ด์์ ์ ๊ณตํ๋ ์คํ์ด ํ์ํ๋ค๋ฉด ์ฌ์ฉํด๋ ์ข์ ๊ฒ ๊ฐ์์. ๋ค๋ง ํ ๊ฐ์ง ์ถ๊ฐ์ ์ผ๋ก ๊ณ ๋ คํด์ผ ํ ๋ถ๋ถ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ค๋ ๊ฑด ํด๋น ์ธํฐํ์ด์ค์์ ๋ช ์ํ ์คํ์ ๋ฐ๋ผ์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๊ธฐ๋ ํด์. ๊ฐ๋ น Iterable์ ๋ฉ์๋ ํ๋ผ๋ฏธํฐ๋ก ์ฌ์ฉํ๋ ๋ฉ์๋๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณผ๊ฒ์. ๋ง์ฝ ๊ณ ๋๊ฐ overrideํ ํจ์๊ฐ ์๋์ ๋ค๋ฅด๊ฒ ๊ตฌํ๋์๋ค๋ฉด ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ๋ ๋ฉ์๋๋ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ๊ฐ ๋์์์ ๋ณด์ฅํ ์ ์์๊น์? ์ด๋ฐ ๋ถ๋ถ๋ค์ ๊น์ง ์ ์ ์ํด์ ๊ตฌ์ฑํ๋ฉด ์ถฉ๋ถํ ์ฌ์ฉํด๋ ๊ด์ฐฎ๋ค๊ณ ์๊ฐํฉ๋๋ค ๐
| private Players(List<Player> players) { | ||
| this.players = List.copyOf(players); | ||
| } |
There was a problem hiding this comment.
copyOf๋ฅผ ์ฌ์ฉํ์๋ค์! ์ด๋ค ์ด์ ์ด ์์๋์??
There was a problem hiding this comment.
final๋ง์ผ๋ก๋ ์ฐธ์กฐ์ ๋ํ ๋ถ๋ณ๋ง ๋ณด์ฅ๋๋๋ฐ ๋ง์ฝ์ copyOf ์์ด ์์ฑ์๋ฅผ ํตํด ๋ฐ์ ์ ์๋ค๋ฉด ์ธ๋ถ์ players ์ธ์คํด์ค์ ์ฐธ์กฐ๋ก ์ธํด ๋ด๋ถ๊ฐ ์๋์น ์์ ๋ณ๊ฒฝ์ด ์์ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ copyOf๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ปฌ๋ ์
์ ๊ตฌ์กฐ์ ๋ํด์๋ ๋ถ๋ณ์ด ๋ณด์ฅ ๋์ด์ ๋ด/์ธ๋ถ์ ์๋์น ์์ ์กฐ์์ผ๋ก๋ถํฐ ์๋ฐฉํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
|
|
||
| ๋ธ๋์ญ ๋ฏธ์ ์ ์ฅ์ | ||
|
|
||
| ## ๊ธฐ๋ฅ ์๊ตฌ ์ฌํญ |
There was a problem hiding this comment.
์ฒ์์ ์๊ตฌ์ฌํญ์ ๋ฐ์์ ๋ ํต์ฌ ์๊ตฌ์ฌํญ์์ ๋์ถ๋๋ ๊ธฐ๋ฅ๋ชฉ๋ก๊ณผ ์๋๋ฆฌ์ค์ฒ๋ผ ์ ์ถ๋ ฅ ์์์์ ๋์ค๋ ์์๋ฅผ ๊ธฐ๋ฐ์ผ๋กํ ๊ธฐ๋ฅ๋ชฉ๋ก์ด ํจ๊ป ๋์ถ๋์ ๋ ์ด๋ป๊ฒ ์ ๋ฆฌ๋ฅผ ํ๊ณ ์ด๋๊น์ง ์ค๊ณ๋ฅผ ํ๊ณ ๊ตฌํ์ ๋ฌด์๋ถํฐ ๋ค์ด๊ฐ์ผํ๋์ง์ ๋ํด์ ์ค์ ์์ ๊ณ ๋ฏผ์ด ๋ ๋๊ฐ ๋ง์ ๋์์ ๋ฐ์ ์ ์๋ค๋ฉด ๋ฐ๊ณ ์ถ์ต๋๋ค.
๋จผ์ ํ ๊ฐ์ง ์ผ์ ์ฒ๋ฆฌํ ์ ์๋ ๊ฐ์ฅ ์์ ๋จ์์ ์๋๋ฆฌ์ค๋ฅผ ์๊ฐํด๋ณด๋ฉด ์ด๋ป๊น์? ์ด๋ฒ ๋ฏธ์
์ฒ๋ผ ๋ธ๋์ญ ๊ฒ์์ผ๋ก ๊ฐ์ ํด๋ณผ๊ฒ์.
- [ ] ์นด๋ ํฉ๊ณ๋ฅผ ๊ณ์ฐํ ์ ์๋ค.
- [ ] ACE๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ ์ ์ฒด ์นด๋ ์ ์๋ฅผ ํฉ์ฐํ๋ค.
- [ ] ACE๋ฅผ 11๋ก ๊ณ์ฐํ์ ๋ ํฉ๊ณ๊ฐ 21์ ์ด๊ณผํ๋ฉด ํด๋น ACE๋ 1๋ก ๊ณ์ฐํ๋ค.
- [ ] ACE๋ฅผ 11๋ก ๊ณ์ฐํ์ ๋ ํฉ๊ณ๊ฐ 21 ์ดํ์ด๋ฉด ํด๋น ACE๋ 11๋ก ๊ณ์ฐํ๋ค.
- [ ] ์นด๋ ๋ญ์น๊ฐ ๋น์ด ์๋ ๊ฒฝ์ฐ ์ ์๋ฅผ ๊ณ์ฐํ ์ ์๋ค.
- [ ] ...
์ด๋ฌํ ์๋๋ฆฌ์ค๋ ๊ฒฐ๊ตญ ํน์ ํ ํ ๊ฐ์ง ์ํฉ์ ์ง์คํ๊ธฐ ๋๋ฌธ์ TDD ์ฌ์ดํด์ ์งํํ๋ ๋ฐ ๋ฌด๋ฆฌ ์์ด ํ์ฉํ ์ ์์ ๊ฒ ๊ฐ์์. ๋ํ ๊ฐ๊ฐ์ ์๋๋ฆฌ์ค๋ฅผ ํด๊ฒฐํ๋ค๋ณด๋ฉด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ฐ์ฒด๋ฅผ ๋ ์ฌ๋ฆฌ๊ฒ ๋๋๋ฐ์, ์ด๋ฌํ ๊ฒ๋ค์ด ๋ชจ์ฌ ๊ฒฐ๊ตญ Card, Deck๊ณผ ๊ฐ์ ๊ฐ์ฒด์ ์ฑ ์์ด ๊ตฌ์ฑ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ฌผ๋ก ์ด๋ฌํ ํ๋ฆ์ด ๋จ ๋ฒ์ ์งํ๋๋ ๊ฒ์ ์๋์ง๋ง ํ ๊ฐ์ง ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํ ์ ์๋ ์ฌ๋ฌ ์๋๋ฆฌ์ค๋ฅผ ๊ณ ๋ฏผํด๋ณด๊ณ ๋น์ทํ ์ฑ๊ฒฉ์ ์นดํ ๊ณ ๋ฆฌ๋ก ๋ฌถ์ด ํ๋์ฉ ์ฒดํฌํ๋ค๋ณด๋ฉด ์์ฐ์ค๋ฝ๊ฒ ์ญํ ๊ณผ ์ฑ ์์ ์ฐพ์๊ฐ ์ ์์ ๊ฒ ๊ฐ์์.
There was a problem hiding this comment.
๊ฐ์ฌํฉ๋๋ค. ์์ ๋จ์์ ์๋๋ฆฌ์ค๋ฅผ ์๊ฐํ๊ณ ์์กด์ฑ์ด ๊ฐ์ฅ ์์ด ๋ณด์ด๋ ์์ ๊ฐ์ฒด๋ถํฐ TDD ํด๋ณด์๋ ์๊ฐ์ ๋๋ถ์ ํ ์ ์๊ฒ ๋ ๊ฒ ๊ฐ์ต๋๋ค!
| 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); | ||
| } |
There was a problem hiding this comment.
ํ๋ก๊ทธ๋๋ฐ ์๊ตฌ์ฌํญ์ ๋ง์ถฐ ๋์ค๋ฅผ ์ค์ฌ๋ณผ๊น์?
There was a problem hiding this comment.
์ฒ์์๋ ์ด์ค for๋ฌธ์ด ๊ฐ๋ ์ฑ์ด ์ข๋ค๊ณ ์๊ฐ์ ํ๋๋ฐ ์ ๊ฐ์ธ์ ์ธ ์ฃผ๊ด์ด ๋ง์ด ๋ค์ด๊ฐ ๊ฒ์ด๋ผ ๋งคํธ์ ์๊ฒฌ๋ ๊ถ๊ธํฉ๋๋ค.
์๊ตฌ ์ฌํญ์ ์งํฌ ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ๋ ์ฌ๋์ต๋๋ค.
์ ์ฒ๋ผ ์คํธ๋ฆผ์ ์ด์ฉํ๋ ๊ฒ๊ณผ ์ค์ฒฉ๋ for ๋ฌธ๋ง ๋ฉ์๋ ๋ถ๋ฆฌํ๋ ๊ฒ์ด์์ต๋๋ค.
flatMap์ ์ด์ฉํ ์ด์ค ์คํธ๋ฆผ์ด ํ๋์ ๋ค์ด์์ ๋ ๊ฐ๋
์ฑ์ด ๋ซ๋ค๊ณ ๋๊ผ๋๋ฐ ๊ด์ฐฎ์๊น์?
There was a problem hiding this comment.
๋ ๋ค ๊ฐ๋ ์ฑ ์ธก๋ฉด์ด๋ผ ํฌ๊ฒ ์๊ด์ ์์ด๋ณด์ฌ์. ์ฌ๋ฌ ํ์๊ณผ ํจ๊ป ํ๋ ํ๋ก์ ํธ๋ผ๋ฉด ์ผ์ข ์ ๋ฃฐ๋ง ์งํค๋ฉด ๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ค๋ง Stream์ ์ฌ์ฉํ ๋๋ ํน์ฑ์ ์ ์๊ณ ์ฐ๋๊ฒ ๋ ์ค์ํ๋ค๊ณ ์๊ฐํด์ ใ ใ
src/main/java/domain/Deck.java
Outdated
| public void shuffle() { | ||
| Collections.shuffle(this.cards); | ||
| } |
There was a problem hiding this comment.
shuffle๊ณผ ๊ฐ์ด ์ ์ดํ ์ ์๋ ์์ญ์ ์ด๋ป๊ฒ ๊ฒ์ฆํ ์ ์์๊น์?
There was a problem hiding this comment.
์ ๋ต ํจํด๊ณผ ํจ์ํ ์ธํฐํ์ด์ค๋ฅผ ํ์ฉํด ์ ํ ๋ก์ง์ ์ธ๋ถ์์ ์ฃผ์ ๋ฐ๋๋ก ๊ฐ์ ํ์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ฌด์์์ฑ์ด๋ผ๋ ์ ์ดํ ์ ์๋ ์์ญ์ ํต์ ํ์ฌ, ํ ์คํธ ํ๊ฒฝ์์ ์ํ๋ ์๋๋ฆฌ์ค๋ฅผ ์์ ๋กญ๊ฒ ์ฌํํ๊ณ ๊ฒ์ฆํ ์ ์๊ฒ ๋์์ต๋๋ค.
| @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); | ||
| } |
There was a problem hiding this comment.
Equals, HashCode๋ฅผ ์ฌ์ ์ํ์๋ค์! ์ด๋ ํ ๊ฒฝ์ฐ ํ์ฉํ๊ฒ ๋๋์?
There was a problem hiding this comment.
๋์ผํ ์ด๋ฆ์ ๊ฐ์ง ํ๋ ์ด์ด๊ฐ ์ค๋ณต์ผ๋ก ์กด์ฌํ์ง ์๋๋ก ํ๊ธฐ ์ํด ์ฌ์ ์ํ์ต๋๋ค.
equals๋ฅผ ํตํด ๊ฐ์ฒด์ ์ฃผ์๊ฐ์ด ๋ค๋ฅด๋๋ผ๋ ์ด๋ฆ์ด ๊ฐ๋ค๋ฉด ๋
ผ๋ฆฌ์ ์ผ๋ก ๊ฐ์ ๊ฐ์ฒด์์ ์ ์ํ๊ณ , ์ด์ ์์ ์ด๋ฃจ๋ hashCode๋ฅผ ํจ๊ป ์์ ํ์ฌ ํด์ ๊ธฐ๋ฐ ์ปฌ๋ ์
์์๋ ์ด ๋๋ฑ์ฑ์ด ์ ์ง๋๋๋ก ํ์ต๋๋ค.
์ด๋ฅผ ํ์ฉํ๋ฉด HashSet์ด๋ HashMap ๊ฐ์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ ๋ ์๋ํ ๋๋ก ์ค๋ณต์ ์๋์ผ๋ก ๊ฑธ๋ฌ๋ผ ์ ์์ต๋๋ค. ๋ํ ๋จ์ ํ
์คํธ์์ isEqualTo๋ฅผ ์ฌ์ฉํ ๋ ๊ฐ์ฒด์ ๋ด๋ถ ํ๋๋ฅผ ํ๋ํ๋ ๋น๊ตํ์ง ์๊ณ ๋ ๊ฐ์ฒด ์์ฒด๋ก ๋๋ฑ์ฑ์ ๊ฒ์ฆํ ์ ์์ต๋๋ค.
| 3. ์๋ธ ํ์ , ๋ค์ํ ๊ตฌํ์ฒด๋ฅผ ๋ฐํํ ์ ์๋ค. | ||
| ์ธ๊ฐ์ง๋ก ์ ๋ฆฌ๋ฅผ ํ๊ณ ์ธ๊ฐ์ง ์ด์ ์ ์ํ์ง ์๋ ๊ฒฝ์ฐ์๋ ์ ์ ๋ฉ์๋๋ณด๋ค ์์ฑ์๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ ์๊ฐ์ด ์ปค์ก์ต๋๋ค. |
There was a problem hiding this comment.
์ด๋ฌํ ๊ธฐ์ค์ ํตํด ์์ฑ์๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉํฅ์ผ๋ก ์ ํด์ง๋์?
There was a problem hiding this comment.
๋ค ์ด๋ฌํ ๊ธฐ์ค์ผ๋ก ์ ์ฉ์ ๊ณ ๋ คํ๊ธฐ๋ก ๊ฐ์ธ์ ์ผ๋ก ์๊ฐ์ ์ ๋ฆฌํ์ต๋๋ค.
ํนํ ํ์ฌ๋ 1๋ฒ์์ ๋งํ ์์ฑ์ ์๋๋ฅผ ํํ์ ๋ํด์ ๊ฐ์ฅ ํฐ ๋น์ค์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
2, 3๋ฒ์ ํ์ฌ๊น์ง ๊ฒฝํ์ ํด๋ณธ ์ ์ด ์๋๋ฐ ์ด๋ฒ ํ์ด์ ์ง๋ฌธ์ ํตํด ๊ฒ์์ ํตํด ์๊ฒ ๋๋๋ฐ ์ ์ ํ ์ํฉ์ ์ธ์งํ ์ ์๋์ง๋ ์์ง ํฐ ์์ ์ ์์ต๋๋ค ๐ฅน
There was a problem hiding this comment.
์ ์ ํ ์ํฉ์ ์ธ์งํ ์ ์๋์ง๋ ์์ง ํฐ ์์ ์ ์์ต๋๋ค ๐ฅน
์ ์ ํ์ง ์์ผ๋ฉด ๋ญ ์ด๋ค๊ฐ์ ใ ใ ์ ๋ ๊ฐ์ธ์ ์ผ๋ก ๊ฒฝํ ์์ด๋ ์ฑ์ฅ๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋๋ฌด ๊ฒ๋จน์ง ๋ง์๊ณ ๋ฏธ์ ํ๋ฉด์ ๋ค์ํ ์๋๋ ๋ง์ด ํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์์.
- ๋๋ฉ์ธ(Rank, Suit, MatchResult ๋ฑ)์์ ๋ทฐ ์ถ๋ ฅ์ ์ํ ๋ฌธ์์ด(String) ํ๋ ์ ๊ฑฐ - ์ถ๋ ฅ ์ ์ฉ ์ด๊ฑฐํ(RankView, SuitView, MatchResultView) ๋์ ์ผ๋ก View ์ฑ ์ ์์ - ๋๋ฉ์ธ ๋ด๋ถ์์ DTO๋ฅผ ๋ฐํํ์ง ์๊ณ , ์ปจํธ๋กค๋ฌ ๊ฒฝ๊ณ์์ Response ๋ ์ฝ๋๋ก ๋งคํ - Score ์ผ๊ธ ์ปฌ๋ ์ (VO) ๋์ ์ผ๋ก ์์๊ฐ ํฌ์ฅ ๋ฐ ๋น๊ต ์ฑ ์ ์์ - GameController์ ๋ค์ฌ์ฐ๊ธฐ Depth ์์
There was a problem hiding this comment.
๋งคํธ Summit์ ํด์ผํ๋ค๋ ์ฌ์ค์ ๋ชฐ๋์ต๋๋ค.
์ด๋ฒ์ ๋ ๋ฐฐ์ ๋ค์, ์ด๊ณณ์ ์๋ก ๋ณด๋ผ PR์ ๋ํ ๋ด์ฉ์ ์ ์ผ๋ฉด ์ข๊ฒ ๋ค๊ณ ํ๋จ์ด ๋ค์์ต๋๋ค!
์ด๋ฒ์ ํผ๋๋ฐฑ ์ฃผ์ ๋ถ๋ถ๋ค์ ์ ์ฉํ๋ฉด์ ๊ฐ์ฅ ํฌ๊ฒ ๋ณ๊ฒฝ๋ ๋ถ๋ถ์ dto๋ฅผ ์๊ฐํด๋ณด๋ฉด์ ๋๋ฉ์ธ๊ณผ ๋ทฐ์ ์์กด์ฑ์ ์์ ์ผ๊ฒ ๋ค๊ณ ๊ฒฐ์ ํ ๊ฒ์ ๋๋ค.
Enum ๋๋ฉ์ธ์ ๋ทฐ์์ ์ฌ์ฉํ๊ธฐ ์ํ ํ๋๋ค์ ๋ชจ๋ ์ ๋ฆฌํ์ต๋๋ค.
์ฌ์ฉ์ ์
์ถ๋ ฅ์ด ๋ณ๊ฒฝ์ด ์์ ๋ View๋ฅผ ๋จผ์ ํ์ธํ ๊ฒ์ผ๋ก ์๊ฐํด์ ํด๋น ํจํค์ง์ Enum์ผ๋ก ์ถ๋ ฅ ๋ฌธ์์ด ์ฐ๊ฒฐ์ ํ์ต๋๋ค.
๋๋ฉ์ธ์์ ์ฌ์ฉํ๋ snapShot()์ด๋ toDto() ๋ฑ์ ์ ๊ฑฐํ์ต๋๋ค.
๊ทธ ์ด์ ๋ ์ ์ฐจ์ ์ธ ๋น์ฆ๋์ค ๋ก์ง, ์ ์ค์ผ์ด์ค๊ฐ ๋ณ๊ฒฝ๋ ๋ ๋๋ฉ์ธ ์ธ๋ถ์์ ์ ์ค์ผ์ด์ค์ ๋ฐ๋ฅธ ๋ฐ์ดํฐ ๊ฐ๊ณต์ ์ฃผ๋ํ๊ณ ์ถ๋ค๊ณ ์๊ฐ์ด ๋ค์๊ธฐ ๋๋ฌธ์
๋๋ค.
๊ทธ๋์ Getter๋ฅผ ํ๋๋ฐ์ ์์ด ๋ถ๋ณ์ฑ์ ์งํฌ๋ ค๊ณ ๋
ธ๋ ฅํ์ต๋๋ค.
๋ณ์, ๋ฉ์๋๋ช ์ ๊ฐ๋ ์ฑ์ ํฅ์ ์ํค๊ธฐ ์ํ ๋ณ๊ฒฝ์ ์๋ํ์ต๋๋ค.
| - [x] Gradle `test`๋ฅผ ์คํํ์ ๋, ๋ชจ๋ ํ ์คํธ๊ฐ ์ ์์ ์ผ๋ก ํต๊ณผํ๋์? | ||
| - [x] ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์์ ์ผ๋ก ์คํ๋๋์? | ||
|
|
||
| ## ์ด๋ค ๋ถ๋ถ์ ์ง์คํ์ฌ ๋ฆฌ๋ทฐํด์ผ ํ ๊น์? |
There was a problem hiding this comment.
pull_request_template.md์ ์กด์ฌ ์ด์ ๋ฅผ ๊น์ด ๊ณ ๋ฏผํด๋ณด์ง ๋ชปํ์ต๋๋ค.
์ ํ์ผ ์์ฒด์ ์ ๊ฐ์ธ์ ์ธ ์ง๋ฌธ์ ๋ด๋ ๊ฒ์ด ํ์ผ์ ๋ชฉ์ (์์ ์ ๊ณต)์ ์ด๊ธ๋๋ค๋ ์ ์ ๊นจ๋ฌ์์ต๋๋ค.
๋ํ ์ด PR ๋ณธ๋ฌธ์ ์ ์ฝ๋๋ฅผ ๋ง์ฃผํ ๋ฆฌ๋ทฐ์ด์ ๋ํ '๋ฐฐ๋ ค๋ฅผ ๋ด๋ ๊ทธ๋ฆ'์ด๋ผ๋ ์ ์ ๊นจ๋ฌ์์ต๋๋ค.
๋จ์ํ ๊ธฐ๋ก์ ๋์ด, ์ด๋ฒ ์์ ์ ํต์ฌ ์์ฝ๊ณผ ๊ตฌ์ฒด์ ์ธ ๋ณ๊ฒฝ ์ฌํญ, ๊ทธ๋ฆฌ๊ณ ์ ๊ฐ ์ค์ํ๊ฒ ๊ณ ๋ฏผํ๋ ์ค๊ณ ํฌ์ธํธ๋ฅผ ๋ช ํํ ์ ๋ฌํ์ฌ ๋ฆฌ๋ทฐ์ด์ ์๊ฐ์ ์๋ผ๊ณ ๊น์ด ์๋ ์ํต์ ํ๊ธฐ ์ํ ๋๊ตฌ์์ ๋ฐฐ์ ์ต๋๋ค.
์์ผ๋ก๋ ์์ฑํด์ฃผ์ ํ ํ๋ฆฟ์ ์๋๋ฅผ ์ ํํ ํ์ ํ์ฌ, ์ ๊ณ ๋ฏผ์ ๊ถค์ ์ ์ฝ๊ฒ ๋ฐ๋ผ์ค์ค ์ ์๋๋ก ์์ฑํ๊ฒ ์ต๋๋ค.
src/main/java/domain/card/Card.java
Outdated
| 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(); | ||
| } | ||
|
|
||
| } |
There was a problem hiding this comment.
์ ๋ record๋ฅผ ์ฌ์ฉํ ๋ ๊ฐ์ง๊ณ ์๋ ๊ฐ ์์ฒด๊ฐ ๊ทธ ๊ฐ์ฒด๋ฅผ ํํํ๋๊ฐ์ ๋ํด์ ์๊ฐ์ ํด๋ด
๋๋ค.
'๊ฐ์ ๋ฌด๋ฌ, ๊ฐ์ ์ซ์๋ฅผ ๊ฐ์ง๊ณ ์์ ๋ ๊ฐ์ ์นด๋์ธ๊ฐ?'์ ๋ํด์ ์๊ฐํด๋ดค๊ณ ๊ทธ๋ฐ ๊ฒฝ์ฐ์ ๊ฐ์ ์นด๋๊ฐ ๋ง๋ค๋ผ๋ ํ๋จ์ด ๋ค์๊ธฐ ๋๋ฌธ์ record๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
์ ๊ฐ ์๊ณ ์์๋ record์ ํน์ฑ์ ์๋์ ๊ฐ์ต๋๋ค.
๊ฐ์ง๊ณ ์๋ ์ํ๋ฅผ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ๋ถ๋ณ ๊ฐ์ฒด์
๋๋ค. ๊ทธ ์ด์ ๋ ํ๋๊ฐ ์์์ ์ผ๋ก final๋ก ์ ์ธ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
๊ฐ์ง๊ณ ์๋ ํ๋์ ๋ํ ํ๋์ ๊ฐ์ง ์ ์์ต๋๋ค. ๊ทธ๋ก ์ธํด ์ ํจ์ฑ์ ๋ณด์ฅํ๋ ๋ฑ ํ์ฉ์ ํ ์ ์์ต๋๋ค.
๋ณด์ผ๋ฌํ๋ ์ดํธ ์ ๊ฑฐ ํจ๊ณผ๋ก ์ฝ๋์ ๊ฐ๊ฒฐ์ฑ์ ๊ฐ์ง ์ ์์ต๋๋ค. equals, hashcode, getter, toString์ ์ปดํ์ผ๋ฌ๊ฐ ํ๋ ๊ธฐ๋ฐ์ผ๋ก ์๋์ผ๋ก ์์ฑํด์ค๋๋ค.
์ถ๊ฐ์ ์ผ๋ก ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ์๊ฒ ๋ ์ ์ด ์์ต๋๋ค. ์ ๋ ์ปฌ๋ ์
์ ํ๋๋ก ๊ฐ์ง์ง ๋ชปํ๋ ์ค ์์์ต๋๋ค. ํ์ง๋ง ๊ทธ์ ์์ ๋ถ๋ณ์ฑ๋ง ์ ๊ณตํ๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ record์์ ์ปฌ๋ ์
์ ์์ ํ๊ฒ ๋ค๋ฃจ๋ ค๋ฉด ์๋์ ์ฝ๋์ฒ๋ผ ์ฒ๋ฆฌ ํด์ผ ํ๋ค๋ ์ ์ ์๊ฒ ๋์์ต๋๋ค.
public record Hand(List<Card> cards) {
public Hand {
// ์์ฑ ์์ ์ ์ฝ๊ธฐ ์ ์ฉ ๋ฆฌ์คํธ๋ก ๋ณํํ์ฌ ์ ์ฅ
cards = List.copyOf(cards);
}
}
๋ํ record์์ ์ฌ์ฉํ๋ ์ ํํ ์ฉ์ด์ ๋ํด์๋ ์ถ๊ฐ์ ์ผ๋ก ์๊ฒ ๋์ต๋๋ค.
- Getter -> Accessor
- ์ํ -> ์ปดํฌ๋ํธ
- ์์ฑ์ -> ์ปดํฉํธ ์์ฑ๏ฟฝ์
| 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(); | ||
| } | ||
| } |
There was a problem hiding this comment.
์ ๊ฐ ์๊ฐํ๋ dto๋ ์์ํ ๋ฐ์ดํฐ ์ ๋ฌ ๊ฐ์ฒด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ชฉ์ ์ ํต์ฌ ๊ฐ์ฒด๊ฐ ์์จ์ ์ผ๋ก ์กด์ฌํ ์ ์๋๋ก ์บก์ํ๋ฅผ ์ง์ผ์ฃผ์ด ๋ณ๊ฒฝ์ด ์๊ฒผ์ ๋ ์ ๋ณด๋ฅผ ์ ๊ณตํ ๊ฐ์ฒด์์ ์์กด์ฑ์ด ์๊ธฐ์ง ์๋๋ก ํ๋ ๊ฒ์ด ๋ชฉ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ๋๋ก๋ ์์ํ์
์ฌ์ฉ์ ์งํฅํ๋ฉฐ ๋ก์ง์ ๊ฐ์ง์ง ์๋ ์์ํ ๋ฐ์ดํฐ ์ ๋ฌ์ ์ง์คํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
src/main/java/domain/card/Rank.java
Outdated
| 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"), |
There was a problem hiding this comment.
์ฅ์ ์ผ๋ก๋ ๋น ๋ฅธ ๊ตฌํ์ด ํธ๋ฆฌํ๋ค๋ ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
์ด๋ฒ ๋ธ๋์ญ ๋ฏธ์
์ ํ๋ฉด์ ํด๋น ๋๋ฉ์ธ์ด ์ด๋์ ์๋์ง ์ธ๋ถ์ฌํญ๋ค์ ์๊ณ ์์ด ๋ฐ๋ก๋ฐ๋ก ๊ณ ์น๊ณ ์ถ๊ฐํ๋ ๊ฒ์ด ํธํ ๊ฒ ๊ฐ์๋ฐ ์์คํ
์ด ์ปค์ง๊ฑฐ๋ ์ธ๋ถ์ฌํญ์ ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ์๋ ๋ทฐ์ ๋ณ๊ฒฝ์ด ์์ ๋ ๋ทฐ๋ฅผ ๋จผ์ ๋ค์ฌ๋ค ๋ณผ ๊ฒ์ผ๋ก ์์๋๋๋ฐ ๊ทธ๋ฌํ ๊ฒฝ์ฐ์์ ๋๋ฉ์ธ๊น์ง ์์ ์ด ํ์ํ๋ค๋ฉด ๋ถํธํ ๊ฒ ๊ฐ์ต๋๋ค.
| private final Name name; | ||
| private final Hand hand; | ||
|
|
||
| protected Participant(Name name) { | ||
| this.hand = new Hand(); | ||
| this.name = name; | ||
| } |
There was a problem hiding this comment.
private๊ฐ ์งํฅํ๋ ๋ชฉ์ ์ ๋ด๋ถ ๊ตฌํ์ ์๋์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ํ๋ ์จ๊ธฐ๊ณ ํ์๋ฅผ ๋ณด์ฌ์ฃผ๋ฉด์ How๋ฅผ ์จ๊ธฐ๊ณ What์ ์ง์คํ ์ ์๊ฒ ํ์ฌ ๊ตฌํ์ ๋ณ๊ฒฝ์ด ์์ ๋ก์์ง๋ ์ฅ์ ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋
ธ์ถ์ ๊ดํด์๋ ์ด๋ค ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋๊ฐ์ ๋ํด์๋ ๋ชจ๋ฅด๋ ๊ฒ์ด ์ข๋ค๊ณ ๋๊ผ์ต๋๋ค.
๊ฐ์ง๊ณ ์๋ ์ํ์ ์๋ฃ๊ตฌ์กฐ๋ ๋ณํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
protected๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ง์ ์ํผํด๋์ค์ ์ํ๋ฅผ ๋ค๋ฃฐ ์ ์๊ฒ ๋๋ฉด์ ๊ตฌํ์ ๋ํ ๊ฐํ ๊ฒฐํฉ์ด ์๊ธธ ๊ฒ์ผ๋ก ์์๋์ด ์ํ๋ ๊ฐ์์ฑ์ ์ป๊ธฐ ํ๋ค๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๋ธ ํด๋์ค๊ฐ ์ํ๋ ๊ฒ์ด ์์ ๋ ํ์์ธ ๋ฉ์๋๋ฅผ ํตํด์ ์ป๋๋ก ํ๋ ๊ฒ์ด ์ข๋ค๊ณ ์๊ฐํ๊ฒ ๋์ต๋๋ค.
| import org.junit.jupiter.params.provider.Arguments; | ||
| import org.junit.jupiter.params.provider.MethodSource; | ||
|
|
||
| public class HandTest { |
There was a problem hiding this comment.
์ ๊ฐ ์๊ฐํ ์ ํ๋ฆฌ์ผ์ด์
๋จ์๋ ์
์ถ๋ ฅ์์, ํ๋์ ์ ์ค์ผ์ด์ค๋ผ๊ณ ๋ณผ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
๋ค์ ๋งํด ์ ์ฐจ์ ์ธ ์ ๊ณตํ ์
์ถ๋ ฅ ์์, ๋ค๋ฅด๊ฒ ํํํ์๋ฉด ์ ์ค์ผ์ด์ค๋ฅผ ํ
์คํธํ๊ณ ์ถ์์ต๋๋ค.
์ฌ์ฉ์์ ์
๋ ฅ -> ์ฒ๋ฆฌ -> ์ถ๋ ฅ์ ์ ์ดํด์ ๋ฐํ์ํ๊ฒฝ์์ ์๋๋ฆฌ์ค๋๋ก ์
๋ ฅํ๋ ๊ฒ์ด ์๋ ํ
์คํธ ์ฝ๋๋ก ๊ฒ์ฆํ๊ณ ์ถ์์ต๋๋ค.
๋จ์ผ ์ฑ
์์์ ๋์ถ๋ ๊ฐ์ฒด๊ฐ์ ํ๋ ฅ ๋ฉ์์ง, ํผ๋ธ๋ฆญ ์ธํฐํ์ด์ค๋ฅผ ํ
์คํธํ๋ ๊ฒ์ด ๋จ์ํ
์คํธ๋ผ๊ณ ์๊ฐ๋ฉ๋๋ค.
์ฆ, ์ธ๋ถ ์์กด์ฑ์ ์ ๊ฑฐํ Tell, Don't Ask์์ ๋งํ๋ Tell์ ํ
์คํธํ๋ ๊ฒ์ด ์๋๊น ์ถ์ต๋๋ค.
ํตํฉํ ์คํธ๋ ํ์ฌ ํ๋ก๊ทธ๋จ, ํ๋ก์ธ์ค ์ด์ธ์ ๋ค๋ฅธ ํ๋ก์ธ์ค์์ ํ๋ ฅ๊น์ง ํจ๊ป ํ ์คํธํ๋ ๊ฒ์ผ๋ก ์๊ฐํฉ๋๋ค.
|
|
||
| ๋ธ๋์ญ ๋ฏธ์ ์ ์ฅ์ | ||
|
|
||
| ## ๊ธฐ๋ฅ ์๊ตฌ ์ฌํญ |
There was a problem hiding this comment.
๊ฐ์ฌํฉ๋๋ค. ์์ ๋จ์์ ์๋๋ฆฌ์ค๋ฅผ ์๊ฐํ๊ณ ์์กด์ฑ์ด ๊ฐ์ฅ ์์ด ๋ณด์ด๋ ์์ ๊ฐ์ฒด๋ถํฐ TDD ํด๋ณด์๋ ์๊ฐ์ ๋๋ถ์ ํ ์ ์๊ฒ ๋ ๊ฒ ๊ฐ์ต๋๋ค!
| 3. ์๋ธ ํ์ , ๋ค์ํ ๊ตฌํ์ฒด๋ฅผ ๋ฐํํ ์ ์๋ค. | ||
| ์ธ๊ฐ์ง๋ก ์ ๋ฆฌ๋ฅผ ํ๊ณ ์ธ๊ฐ์ง ์ด์ ์ ์ํ์ง ์๋ ๊ฒฝ์ฐ์๋ ์ ์ ๋ฉ์๋๋ณด๋ค ์์ฑ์๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ ์๊ฐ์ด ์ปค์ก์ต๋๋ค. |
There was a problem hiding this comment.
๋ค ์ด๋ฌํ ๊ธฐ์ค์ผ๋ก ์ ์ฉ์ ๊ณ ๋ คํ๊ธฐ๋ก ๊ฐ์ธ์ ์ผ๋ก ์๊ฐ์ ์ ๋ฆฌํ์ต๋๋ค.
ํนํ ํ์ฌ๋ 1๋ฒ์์ ๋งํ ์์ฑ์ ์๋๋ฅผ ํํ์ ๋ํด์ ๊ฐ์ฅ ํฐ ๋น์ค์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
2, 3๋ฒ์ ํ์ฌ๊น์ง ๊ฒฝํ์ ํด๋ณธ ์ ์ด ์๋๋ฐ ์ด๋ฒ ํ์ด์ ์ง๋ฌธ์ ํตํด ๊ฒ์์ ํตํด ์๊ฒ ๋๋๋ฐ ์ ์ ํ ์ํฉ์ ์ธ์งํ ์ ์๋์ง๋ ์์ง ํฐ ์์ ์ ์์ต๋๋ค ๐ฅน
| 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); | ||
| } |
There was a problem hiding this comment.
์ฒ์์๋ ์ด์ค for๋ฌธ์ด ๊ฐ๋ ์ฑ์ด ์ข๋ค๊ณ ์๊ฐ์ ํ๋๋ฐ ์ ๊ฐ์ธ์ ์ธ ์ฃผ๊ด์ด ๋ง์ด ๋ค์ด๊ฐ ๊ฒ์ด๋ผ ๋งคํธ์ ์๊ฒฌ๋ ๊ถ๊ธํฉ๋๋ค.
์๊ตฌ ์ฌํญ์ ์งํฌ ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ๋ ์ฌ๋์ต๋๋ค.
์ ์ฒ๋ผ ์คํธ๋ฆผ์ ์ด์ฉํ๋ ๊ฒ๊ณผ ์ค์ฒฉ๋ for ๋ฌธ๋ง ๋ฉ์๋ ๋ถ๋ฆฌํ๋ ๊ฒ์ด์์ต๋๋ค.
flatMap์ ์ด์ฉํ ์ด์ค ์คํธ๋ฆผ์ด ํ๋์ ๋ค์ด์์ ๋ ๊ฐ๋
์ฑ์ด ๋ซ๋ค๊ณ ๋๊ผ๋๋ฐ ๊ด์ฐฎ์๊น์?
| - [x] Gradle `test`๋ฅผ ์คํํ์ ๋, ๋ชจ๋ ํ ์คํธ๊ฐ ์ ์์ ์ผ๋ก ํต๊ณผํ๋์? | ||
| - [x] ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์์ ์ผ๋ก ์คํ๋๋์? | ||
|
|
||
| ## ์ด๋ค ๋ถ๋ถ์ ์ง์คํ์ฌ ๋ฆฌ๋ทฐํด์ผ ํ ๊น์? |
There was a problem hiding this comment.
ํ ๊ฐ์ง ๊ถ๊ธํ ์ ์ด ์์ต๋๋ค ๋งคํธ!
์๋กญ๊ฒ ํ๋ฆฌํ์คํธ๋ฅผ ๋ณด๋์ ๋ PR ๋ณธ๋ฌธ์ ์๋กญ๊ฒ ์์ ํด๋ ๋๋์ง, ์ข์ ๋ฐฉ๋ฒ์ธ๊ฑด์ง ๊ถ๊ธํฉ๋๋ค.
๋ง์ฝ ์๋กญ๊ฒ ๋ณธ๋ฌธ์ ์์ ํ๋ ๊ฒ์ด ๋ง๋๊ฑฐ๋ผ๋ฉด ์ด๋ฒ์ ๋ณ๊ฒฝ์ฌํญ๋ค์ ๋ํด์ ํต์ฌ ์์ฝ์ ํ๊ณ ๊ทธ๊ฒ๋ค์ ๋ํ ๊ทผ๊ฑฐ๋ค์ ์์ฑํ๋ ์ ๋๋ฉด ๊ด์ฐฎ์๊น์?
hyeonic
left a comment
There was a problem hiding this comment.
์๋ ํ์ธ์ ๊ณ ๋~ ๋ฆฌ๋ทฐ ๋ฐ์๋ ์ ํด์ฃผ์๊ณ ์๊ตฌ์ฌํญ๋ ๋๋ถ๋ถ ๋ง์กฑํ์ฌ์ ์ฌ์ดํด1์ ๋จธ์งํด๋ ๋ ๊ฒ ๊ฐ์์ ใ ใ
์ดํ ๋ฏธ์ ์งํํ๋ฉฐ ์ข ๋ ์ด์ผ๊ธฐ ๋๋๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค! ๊ถ๊ธํ๊ฑฐ๋ ๋์น ์ง๋ฌธ ์๋ค๋ฉด ์ธ์ ๋ ํธํ๊ฒ ๋์ ์ฃผ์ธ์~
| - [x] Gradle `test`๋ฅผ ์คํํ์ ๋, ๋ชจ๋ ํ ์คํธ๊ฐ ์ ์์ ์ผ๋ก ํต๊ณผํ๋์? | ||
| - [x] ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์์ ์ผ๋ก ์คํ๋๋์? | ||
|
|
||
| ## ์ด๋ค ๋ถ๋ถ์ ์ง์คํ์ฌ ๋ฆฌ๋ทฐํด์ผ ํ ๊น์? |
There was a problem hiding this comment.
PR ํ ํ๋ฆฟ์ ๊ทธ๋ฅ ๋จ์ํ ๊ฐ์ด๋๋ฅผ ์ ๊ณต ํด์ค๋ฟ์ ๋๋ค ใ ใ ๊ณ ๋๊ฐ ์๊ฐ ํ์ ๋ ์ถ๊ฐ์ ์ธ ๋ด์ฉ์ด ํ์ํ๋ค ํ๋จํ๋ฉด ์์ ๋กญ๊ฒ ์์ฑํด๋ ๊ด์ฐฎ์์.
๋ค๋ง ์ฝ๋ ๊ด๋ จ ์ง๋ฌธ์ด๋ผ๋ฉด ์ฝ๋ ๋ฒ ์ด์ค์ ์ฝ๋ฉํธ๋ฅผ ํตํด ์ ๋ฌ ์ฃผ์๋๊ฒ ์ ์ฒด์ ์ธ ๋งฅ๋ฝ์ ํ์ ํ๋๋ฐ ๋ ์ฉ์ดํ ๊ฒ ๊ฐ์์.
| private final Name name; | ||
| private final Hand hand; | ||
|
|
||
| protected Participant(Name name) { | ||
| this.hand = new Hand(); | ||
| this.name = name; | ||
| } |
There was a problem hiding this comment.
protected๋ ๋ง์ ์ฃผ์ ๊ฒ ์ฒ๋ผ ๊ฐํ ๊ฒฐํฉ์ด ์๊ธฐ๋ ๋ฏ ๋ณด์ด๊ธฐ๋ ํ์ง๋ง ๊ทธ๋ ๋ค๊ณ ์์์ ์์ ํ ๋ฐฐ์ ํ ํ์ ์๋ค๊ณ ์๊ฐํด์. ์์์ด๋ ์กฐํฉ์ด๋ ๊ฐ๊ฐ์ ๋ง๋ ์ํฉ์ ์ถฉ๋ถํ ํ์ฉํ ์ ์๊ธฐ์ ์์ ๋ฐฐ์ ํ๊ธฐ ๋ณด๋จ ์ง์ ์ฌ์ฉํด๋ณด๋ฉฐ ๋๋ ์ฅ๋จ์ ์ ๊ธฐ๋ฐ์ผ๋ก ์์ผ๋ก์ ์ ํ์ ์งํํ ๋ ์๋ถ์ผ๋ก ์ผ์๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์์ ใ ใ
| import java.util.List; | ||
| import java.util.Set; | ||
|
|
||
| public class Players implements Iterable<Player> { |
There was a problem hiding this comment.
๋ค ์ข์ต๋๋ค. Iterable ๋ด์์ ์ ๊ณตํ๋ ์คํ์ด ํ์ํ๋ค๋ฉด ์ฌ์ฉํด๋ ์ข์ ๊ฒ ๊ฐ์์. ๋ค๋ง ํ ๊ฐ์ง ์ถ๊ฐ์ ์ผ๋ก ๊ณ ๋ คํด์ผ ํ ๋ถ๋ถ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ค๋ ๊ฑด ํด๋น ์ธํฐํ์ด์ค์์ ๋ช ์ํ ์คํ์ ๋ฐ๋ผ์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๊ธฐ๋ ํด์. ๊ฐ๋ น Iterable์ ๋ฉ์๋ ํ๋ผ๋ฏธํฐ๋ก ์ฌ์ฉํ๋ ๋ฉ์๋๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณผ๊ฒ์. ๋ง์ฝ ๊ณ ๋๊ฐ overrideํ ํจ์๊ฐ ์๋์ ๋ค๋ฅด๊ฒ ๊ตฌํ๋์๋ค๋ฉด ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ๋ ๋ฉ์๋๋ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ๊ฐ ๋์์์ ๋ณด์ฅํ ์ ์์๊น์? ์ด๋ฐ ๋ถ๋ถ๋ค์ ๊น์ง ์ ์ ์ํด์ ๊ตฌ์ฑํ๋ฉด ์ถฉ๋ถํ ์ฌ์ฉํด๋ ๊ด์ฐฎ๋ค๊ณ ์๊ฐํฉ๋๋ค ๐
| 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); | ||
| } |
There was a problem hiding this comment.
๋ ๋ค ๊ฐ๋ ์ฑ ์ธก๋ฉด์ด๋ผ ํฌ๊ฒ ์๊ด์ ์์ด๋ณด์ฌ์. ์ฌ๋ฌ ํ์๊ณผ ํจ๊ป ํ๋ ํ๋ก์ ํธ๋ผ๋ฉด ์ผ์ข ์ ๋ฃฐ๋ง ์งํค๋ฉด ๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ค๋ง Stream์ ์ฌ์ฉํ ๋๋ ํน์ฑ์ ์ ์๊ณ ์ฐ๋๊ฒ ๋ ์ค์ํ๋ค๊ณ ์๊ฐํด์ ใ ใ
| import org.junit.jupiter.params.provider.Arguments; | ||
| import org.junit.jupiter.params.provider.MethodSource; | ||
|
|
||
| public class HandTest { |
There was a problem hiding this comment.
๋จ์ ํ ์คํธ, ํตํฉ ํ ์คํธ, E2E ํ ์คํธ, ์ธ์ ํ ์คํธ ๋ฑ ๊ด์ ๊ณผ ๊ฐ๋ , ๋ ์ด์ด์ ๋ฐ๋ผ ์ฌ๋ฌ ํ ์คํธ ๋ฐฉ์์ ํ์ฉํ ์ ์์ ๊ฒ ๊ฐ์์. ์ด๋ฌํ ํ ์คํธ๋ ๋ฌด์กฐ๊ฑด ๋ค ์ถฉ์กฑํด์ผ ํ๋ค๊ธฐ ๋ณด๋จ ์ด๋ ํ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๋ฉฐ ๊ฒ์ฆํ๊ณ ์ ํ๋ ๋ฒ์๋ ํ์์ ๋ฐ๋ผ ์ ํํ์ฌ ์ฌ์ฉํ ์ ์์ ๊ฒ ๊ฐ์์. ๋ฌผ๋ก ํ ๋ด์์ ํ์ค์ ๊ฐ์ง๊ณ ์๋ค๋ฉด ํด๋น ๋ฐฉ์์ ๋ฐ๋ฅด๋ฉด ๋ ๊ฑฐ ๊ฐ๊ตฌ์! ๊ณ ๋๊ฐ ์ค๋ช ์ฃผ์ ๋ถ๋ถ์ ์ฌ๋ฌ ๊ฐ๋ ์ด ์์ฌ์๋ ๊ฒ ๊ฐ์๋ฐ ์ผ์ข ์ ์ ์ค์ผ์ด์ค๋ฅผ ํ ์คํธ ํ๋ ๊ฑด ์ธ์ ํ ์คํธ์ ๊ฐ๊น์ง ์๋ ์ถ๋ค์.
๋จผ์ ์ง๋ฌธ ์ฃผ์ค ๋ ์๊ณ ์๋ ๋ถ๋ถ์ ์ด๋๊น์ง์ธ์ง, ์ง๋ฌธ์ ๋จ๊ฒจ์ค ๊ฐ๋ ์ ๋ํด ์ด๋ค ์๊ฐ์ ๊ฐ์ง๊ณ ์๋์ง ์ ๋ฌ์ฃผ์๊ณ ์ถ๊ฐ์ ์ผ๋ก ๊ถ๊ธํ ๋ถ๋ถ์ ๋จ๊ฒจ ์ฃผ์๋ฉด ์ข ๋ ๋ช ํํ๊ฒ ํท๊ฐ๋ฆฌ๋ ์ง์ ์ ํ์ ํ๊ณ ๋ต๋ณ๋๋ฆด ์ ์์ ๊ฒ ๊ฐ์์! ์ต์ด์ ์ฃผ์ ์ง๋ฌธ๋ง ๋ณด์์ ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๋จ์๊ฐ ๋ฌด์์ธ์ง๋ถํฐ ๋ช ํํ๊ฒ ์ดํด๊ฐ ์๋๋ค๋ณด๋ ์ ํตํฉ ํ ์คํธ๋ ํค์๋๊ฐ ๋์๋์ง, ๋ฌด์์ด ํ์์ ์ด๋ผ๊ณ ์๊ฐํ๋์ง ํ๋ฒ์ ์ธ์ง๊ฐ ๋์ง ์์์ด์. ๋ค์ ๋ฏธ์ ์งํํ ๋๋ ์๋ฐ ๋ถ๋ถ๋ ๊ฐ์ด ๊ณ ๋ คํด์ ์งํ ํ๋ฉด ์ข ๋ ๋ค์ํ ๋ํ๋ฅผ ๋๋ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค ใ ใ
| 3. ์๋ธ ํ์ , ๋ค์ํ ๊ตฌํ์ฒด๋ฅผ ๋ฐํํ ์ ์๋ค. | ||
| ์ธ๊ฐ์ง๋ก ์ ๋ฆฌ๋ฅผ ํ๊ณ ์ธ๊ฐ์ง ์ด์ ์ ์ํ์ง ์๋ ๊ฒฝ์ฐ์๋ ์ ์ ๋ฉ์๋๋ณด๋ค ์์ฑ์๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ ์๊ฐ์ด ์ปค์ก์ต๋๋ค. |
There was a problem hiding this comment.
์ ์ ํ ์ํฉ์ ์ธ์งํ ์ ์๋์ง๋ ์์ง ํฐ ์์ ์ ์์ต๋๋ค ๐ฅน
์ ์ ํ์ง ์์ผ๋ฉด ๋ญ ์ด๋ค๊ฐ์ ใ ใ ์ ๋ ๊ฐ์ธ์ ์ผ๋ก ๊ฒฝํ ์์ด๋ ์ฑ์ฅ๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋๋ฌด ๊ฒ๋จน์ง ๋ง์๊ณ ๋ฏธ์ ํ๋ฉด์ ๋ค์ํ ์๋๋ ๋ง์ด ํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์์.
์ฒดํฌ ๋ฆฌ์คํธ
test๋ฅผ ์คํํ์ ๋, ๋ชจ๋ ํ ์คํธ๊ฐ ์ ์์ ์ผ๋ก ํต๊ณผํ๋์?์ด๋ค ๋ถ๋ถ์ ์ง์คํ์ฌ ๋ฆฌ๋ทฐํด์ผ ํ ๊น์?
๊ฐ๋ ์ฑ์ด ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค, ๋ถ์กฑํ ๋ถ๋ถ์ด ๋ง์๋ฐ ๊ฐ๋ ์ฑ์ด ๋ถ์กฑํ ๋ถ๋ถ๋ค์ ๋ํด์ ์๊ณ ์ถ์ต๋๋ค.
๋ฎ์ ๊ฒฐํฉ๋์ ๋์ ์์ง๋๋ฅผ ๊ฐ์ง๊ณ ์ถ์๋ฐ ๊ตฌ์ฒด์ ์ธ ๋ฐฉ๋ฒ๊ณผ ๊ฒฝํ์ ๋ง์ด ์๊ณ ์ถ์ต๋๋ค.
์ผ๊ธ ์ปฌ๋ ์ ์ ์ํํ ์ ์๋๋ก ์ดํฐ๋ฌ๋ธ์ ๊ตฌํํ๋ฉด ์๋๋ ๊ฒ์ธ์ง ๊ถ๊ธํฉ๋๋ค.
Enum ์์ฑ์ ํ ๋์ ํ๋๋ก ๋ทฐ์์ ์ฌ์ฉํ๊ธฐ ์ํ String์ ๊ฐ์ ธ๋ ๋๋์ง ๊ถ๊ธํฉ๋๋ค.
Enum๊ฐ์ฒด.name์ผ๋กequals๋ฅผ ์ด์ฉํด์ผํ๋ ๊ฒ์ธ์ง ์ฌ์ฉํด๋ ๊ด์ฐฎ์์ง์ ๋ํ ํ๋จ์ด ํท๊ฐ๋ฆฝ๋๋ค.์์์ ์ฒ์ ์ฌ์ฉํด๋ดค์ต๋๋ค. ํธ๋์ ๊ฐ์ ์ํ๋ฅผ ๊ณต์ ํ๊ธฐ ์ํด์ ์ธํฐํ์ด์ค๋ณด๋ค ์ถ์ํด๋์ค๋ฅผ ์ฌ์ฉํด์ผํ๋ค๊ณ ์๊ฐํ์ต๋๋ค. ๋ค๋ง ํ์ด์ ์๊ฒฌ์ธ ํ๋๋ฅผ private๋ก ํ๋ ๊ฒ์ ์งํฅํด์ผํ๋ค๋ ์๊ธฐ๋ฅผ ๋ฃ๊ณ ์๊ฐ์ ํด๋ณด๋ ์์กด์ฑ์ ์ํด์๋ ๊ทธ๊ฒ์ด ์ข๊ฒ ๋ค๊ณ ๋๊ผ์ต๋๋ค. ํ์ง๋ง player, dealer๋ฅผ ๋ค๋ฃฐ ๋ hand๋ฅผ ๋ง์๊ป ๋ค๋ฃฐ ์ ์์์ ๋ถํธํ๊ณ ์ ๊ทผ์ ์ด์๋ฅผ protected์ผ๋ก ์ฌ์ฉํ๋ฉด ์๋๋์ง๊ฐ ๊ถ๊ธํ์ต๋๋ค. ๋ฉ์๋๋ฅผ protected์ผ๋ก Participant์ ๊ตฌํํ๋ฉด์ ์ํ๋ private๋ก ์ ์งํ๋๋ก ์ต๋ํ ๋ ธ๋ ฅํ๋ ๊ฒ์ด ๋ง๋์ง ๊ถ๊ธํฉ๋๋ค.
์ด๋ฆ์ ์ง๋ ๊ฒ์ด ๋๋ฌด ์ด๋ ค์ด๋ฐ ์ข์ ๋ฐฉ๋ฒ์ ๋ง์ ์ฝ๋๋ฅผ ๋ณด๋ ๊ฒ์ด๋ผ ์๊ฐํ๋๋ฐ ๋ค๋ฅธ ์ข์ ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด ์๊ณ ์ถ์ต๋๋ค.
์ด๋ฒ์ ์์ฑํ ํด๋์ค๊ฐ ๋ง๋ค๊ณ ๋๊ปด์ก๋๋ฐ ์ด๋ค ์์ผ๋ก ๋ถ๋ฅ๋ฅผ ํ๋ ๊ฒ์ด ์ข์์ง ๊ณ ๋ฏผ์ ํ๋๋ฐ ์ด๋ ค์ ์ต๋๋ค. ๊ด๋ก๊ฐ ์์๊น์?
๋จ์ํ ์คํธ๋ง ์์ฑํ ๊ฒฝํ์ด ์๋๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋จ์์์ ์งํํ๋ ๊ฒ์ด ํตํฉํ ์คํธ๋ผ๊ณ ๋ณผ ์ ์์๊น์? ๋ง๋ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๋จ์์์์ ํ ์คํธ๊ฐ ํ์์ ์ธ์ง ๊ถ๊ธํฉ๋๋ค.
์ฒ์์ ์๊ตฌ์ฌํญ์ ๋ฐ์์ ๋ ํต์ฌ ์๊ตฌ์ฌํญ์์ ๋์ถ๋๋ ๊ธฐ๋ฅ๋ชฉ๋ก๊ณผ ์๋๋ฆฌ์ค์ฒ๋ผ ์ ์ถ๋ ฅ ์์์์ ๋์ค๋ ์์๋ฅผ ๊ธฐ๋ฐ์ผ๋กํ ๊ธฐ๋ฅ๋ชฉ๋ก์ด ํจ๊ป ๋์ถ๋์ ๋ ์ด๋ป๊ฒ ์ ๋ฆฌ๋ฅผ ํ๊ณ ์ด๋๊น์ง ์ค๊ณ๋ฅผ ํ๊ณ ๊ตฌํ์ ๋ฌด์๋ถํฐ ๋ค์ด๊ฐ์ผํ๋์ง์ ๋ํด์ ์ค์ ์์ ๊ณ ๋ฏผ์ด ๋ ๋๊ฐ ๋ง์ ๋์์ ๋ฐ์ ์ ์๋ค๋ฉด ๋ฐ๊ณ ์ถ์ต๋๋ค.