Skip to content

[πŸš€ 사이클2 - λ―Έμ…˜ (λΈ”λž™μž­ λ² νŒ…)] μ½”λ‘œκ΅¬ λ―Έμ…˜ μ œμΆœν•©λ‹ˆλ‹€.#1131

Open
korogoo wants to merge 14 commits intowoowacourse:korogoofrom
korogoo:korogoo
Open

[πŸš€ 사이클2 - λ―Έμ…˜ (λΈ”λž™μž­ λ² νŒ…)] μ½”λ‘œκ΅¬ λ―Έμ…˜ μ œμΆœν•©λ‹ˆλ‹€.#1131
korogoo wants to merge 14 commits intowoowacourse:korogoofrom
korogoo:korogoo

Conversation

@korogoo
Copy link

@korogoo korogoo commented Mar 15, 2026

체크 리슀트

  • λ―Έμ…˜μ˜ ν•„μˆ˜ μš”κ΅¬μ‚¬ν•­μ„ λͺ¨λ‘ κ΅¬ν˜„ν–ˆλ‚˜μš”?

아직 λ©”μ„œλ“œμ˜ 길이가 κΈΈμ–΄μ„œ λ¦¬νŽ™ν„°λ§μ΄ ν•„μš”ν•œ 뢀뢄이 μžˆμŠ΅λ‹ˆλ‹€. μš°μ„  κΈ°λŠ₯만 λΉ λ₯΄κ²Œ κ΅¬ν˜„ν•œ λ’€ PR 보내고, λ¦¬λ·°μ–΄λ‹˜κ³Ό 더 λ§Žμ€ μ˜κ²¬μ„ λ‚˜λˆ λ³΄κ³  μ‹ΆμŠ΅λ‹ˆλ‹€!

  • Gradle testλ₯Ό μ‹€ν–‰ν–ˆμ„ λ•Œ, λͺ¨λ“  ν…ŒμŠ€νŠΈκ°€ μ •μƒμ μœΌλ‘œ ν†΅κ³Όν–ˆλ‚˜μš”?
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ •μƒμ μœΌλ‘œ μ‹€ν–‰λ˜λ‚˜μš”?

UML

객체 κ°„μ˜ μ˜μ‘΄κ΄€κ³„λ₯Ό νŒŒμ•…ν•˜κΈ° μœ„ν•΄μ„œ UML 을 μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€.
개인적으둜 μ‚¬μš©ν•˜λ €κ³  μž‘μ„±ν•˜μ˜€μœΌλ‚˜, κΈ°λŠ₯ μΆ”κ°€λ‘œ μΈν•œ 변경사항 νŒŒμ•…μ— 도움이 될 수 μžˆμ„κΉŒ ν•˜μ—¬ μ²¨λΆ€ν•©λ‹ˆλ‹€.
(아직 μ‚¬μš©μ΄ λ―Έμˆ™ν•΄μ„œ 잘λͺ»λœ ν‘œκΈ°κ°€ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€..!)

blackjack drawio


μ–΄λ–€ 뢀뢄에 μ§‘μ€‘ν•˜μ—¬ 리뷰해야 ν• κΉŒμš”?

λ³€κ²½κ°€λŠ₯ν•œ ν”„λ‘œκ·Έλž¨ λ§Œλ“€κΈ°μ˜ 적정선

사이클 1μ—μ„œλŠ” 변경에 μœ μ—°ν•œ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“œλŠ” 것을 λͺ©ν‘œλ‘œ 두고,
λ³€κ²½ κ°€λŠ₯성이 μžˆλ‹€κ³  νŒλ‹¨ν•œ 뢀뢄에 μ „λž΅ νŒ¨ν„΄μ„ μ μš©ν•˜κ±°λ‚˜ μ˜μ‘΄μ„±μ„ μ£Όμž…λ°›λŠ” λ°©μ‹μœΌλ‘œ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ μΉ΄λ“œ 생성 μ‹œ CardsGenerator μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ£Όμž…λ°›κ±°λ‚˜,
승패 νŒμ •μ„ GameReferee μΈν„°νŽ˜μ΄μŠ€λ‘œ λΆ„λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.

ν•˜μ§€λ§Œ 리뷰λ₯Ό 톡해 YAGNI 원칙을 λ‹€μ‹œ μƒκ°ν•΄λ³΄κ²Œ λ˜μ—ˆκ³ ,
ν˜„μž¬ μš”κ΅¬μ‚¬ν•­ κΈ°μ€€μ—μ„œλŠ” 일뢀 좔상화가 μ˜€λ²„μ—”μ§€λ‹ˆμ–΄λ§μΌ 수 μžˆλ‹€κ³  느껴 사이클 2μ—μ„œλŠ” μ œκ±°ν–ˆμŠ΅λ‹ˆλ‹€.

아직 μ΄λŸ¬ν•œ ν™•μž₯성을 κ³ λ €ν•œ 섀계와 YAGNI μ‚¬μ΄μ˜ 적정선을 νŒλ‹¨ν•˜λŠ” 것이 μ°Έ μ–΄λ ΅κ²Œ λŠκ»΄μ§‘λ‹ˆλ‹€.

보톡 썬은 λ³€κ²½ κ°€λŠ₯성을 κ³ λ €ν•΄ 미리 좔상화λ₯Ό λ„μž…ν•˜λŠ” νŽΈμΈμ§€,
μ•„λ‹ˆλ©΄ μš°ν…Œμ½”μ—μ„œ μ΄μ•ΌκΈ°ν•˜λ“― ν˜„μž¬ μš”κ΅¬μ‚¬ν•­μ— 집쀑해 λ‹¨μˆœν•˜κ²Œ κ΅¬ν˜„ν•œ λ’€ ν•„μš”ν•  λ•Œ λ¦¬νŒ©ν„°λ§ν•˜λŠ” 방식을 더 μ„ ν˜Έν•˜λŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€!


μƒνƒœλ₯Ό κ°€μ§€μ§€ μ•ŠλŠ” μœ ν‹Έμ„± 클래슀

객체 μ±…μž„μ„ 뢄리할 λ•Œ κ°€μž₯ μ–΄λ €μ› λ˜ λΆ€λΆ„μž…λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ BlackjackGameReferee 같이 νŠΉμ • κ·œμΉ™μ— 따라 값을 κ³„μ‚°ν•˜κ±°λ‚˜ λ³€ν™˜λ§Œ μˆ˜ν–‰ν•˜λŠ” ν΄λž˜μŠ€κ°€ μžˆμ„ λ•Œ,
이런 클래슀λ₯Ό λ³„λ„μ˜ 객체둜 λ‘λŠ” 것이 객체지ν–₯적으둜 μžμ—°μŠ€λŸ¬μš΄μ§€,
μ•„λ‹ˆλ©΄ λ‹¨μˆœν•œ static μœ ν‹Έ 클래슀둜 λ‘λŠ” 편이 더 μ μ ˆν•œμ§€ νŒλ‹¨ 기쀀이 아직 λͺ…ν™•ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ €λŠ” 가끔 이런 ν΄λž˜μŠ€λ“€μ„ λ§Œλ“€ λ•Œ μ‹€μ œλ‘œ 도메인 의미λ₯Ό κ°€μ§„ 객체라기보닀,
μžλ°”μ—μ„œ static λ©”μ„œλ“œλ₯Ό λ§Œλ“€ 수 있게 μ—΄μ–΄λ’€κΈ° λ•Œλ¬Έμ— νŽΈμ˜μƒ λ§Œλ“€μ–΄μ§€λŠ” 객체인 μ²™(?) ν•˜λŠ” 객체가 μ•„λ‹Œμ§€ 생각이 λ“­λ‹ˆλ‹€.

이런 μƒνƒœκ°€ μ—†λŠ” μœ ν‹Έμ„± 객체λ₯Ό 섀계해도 κ±΄κ°•ν•œκ±΄μ§€,
더 객체지ν–₯적으둜 ν’€μ–΄λ‚˜κ°ˆ 수 μžˆλŠ” 방식이 μžˆλ‹€λ©΄, μ–΄λ–€ 사고 흐름을 ν•™μŠ΅ν•˜λ©΄ 쒋을지 썬의 쑰언이 λ“£κ³ μ‹ΆμŠ΅λ‹ˆλ‹€!

@korogoo korogoo changed the title Korogoo [πŸš€ 사이클2 - λ―Έμ…˜ (λΈ”λž™μž­ λ² νŒ…)] μ½”λ‘œκ΅¬ λ―Έμ…˜ μ œμΆœν•©λ‹ˆλ‹€. Mar 15, 2026
Copy link
Author

@korogoo korogoo left a comment

Choose a reason for hiding this comment

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

pr λ³Έλ¬Έ μ§ˆλ¬Έμ— λŒ€ν•œ μ½”λ“œμž…λ‹ˆλ‹€!

Comment on lines +19 to +27

public static ShuffledDeck create() {
List<Card> cards = Arrays.stream(Rank.values())
.flatMap(ShuffledDeck::createCardsByRank)
.collect(Collectors.toCollection(ArrayList::new));
Collections.shuffle(cards);

return new ShuffledDeck(cards);
}
Copy link
Author

Choose a reason for hiding this comment

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

λ³€κ²½κ°€λŠ₯ν•œ ν”„λ‘œκ·Έλž¨ λ§Œλ“€κΈ°μ˜ 적정선

사이클 1μ—μ„œλŠ” 변경에 μœ μ—°ν•œ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“œλŠ” 것을 λͺ©ν‘œλ‘œ 두고,
λ³€κ²½ κ°€λŠ₯성이 μžˆλ‹€κ³  νŒλ‹¨ν•œ 뢀뢄에 μ „λž΅ νŒ¨ν„΄μ„ μ μš©ν•˜κ±°λ‚˜ μ˜μ‘΄μ„±μ„ μ£Όμž…λ°›λŠ” λ°©μ‹μœΌλ‘œ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ μΉ΄λ“œ 생성 μ‹œ CardsGenerator μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ£Όμž…λ°›κ±°λ‚˜,
승패 νŒμ •μ„ GameReferee μΈν„°νŽ˜μ΄μŠ€λ‘œ λΆ„λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.

ν•˜μ§€λ§Œ 리뷰λ₯Ό 톡해 YAGNI 원칙을 λ‹€μ‹œ μƒκ°ν•΄λ³΄κ²Œ λ˜μ—ˆκ³ ,
ν˜„μž¬ μš”κ΅¬μ‚¬ν•­ κΈ°μ€€μ—μ„œλŠ” 일뢀 좔상화가 μ˜€λ²„μ—”μ§€λ‹ˆμ–΄λ§μΌ 수 μžˆλ‹€κ³  느껴 사이클 2μ—μ„œλŠ” μ œκ±°ν–ˆμŠ΅λ‹ˆλ‹€.

아직 μ΄λŸ¬ν•œ ν™•μž₯성을 κ³ λ €ν•œ 섀계와 YAGNI μ‚¬μ΄μ˜ 적정선을 νŒλ‹¨ν•˜λŠ” 것이 μ°Έ μ–΄λ ΅κ²Œ λŠκ»΄μ§‘λ‹ˆλ‹€.

보톡 썬은 λ³€κ²½ κ°€λŠ₯성을 κ³ λ €ν•΄ 미리 좔상화λ₯Ό λ„μž…ν•˜λŠ” νŽΈμΈμ§€,
μ•„λ‹ˆλ©΄ μš°ν…Œμ½”μ—μ„œ μ΄μ•ΌκΈ°ν•˜λ“― ν˜„μž¬ μš”κ΅¬μ‚¬ν•­μ— 집쀑해 λ‹¨μˆœν•˜κ²Œ κ΅¬ν˜„ν•œ λ’€ ν•„μš”ν•  λ•Œ λ¦¬νŒ©ν„°λ§ν•˜λŠ” 방식을 더 μ„ ν˜Έν•˜λŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€!

Comment on lines +6 to 13
public class BlackjackGameReferee {
public static GameResult judge(Dealer dealer, Player player) {
if (player.isBust()) {
return GameResult.DEALER_WIN;
}
if (dealer.isBust()) {
return GameResult.PLAYER_WIN;
}
Copy link
Author

@korogoo korogoo Mar 15, 2026

Choose a reason for hiding this comment

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

μƒνƒœλ₯Ό κ°€μ§€μ§€ μ•ŠλŠ” μœ ν‹Έμ„± 클래슀

객체 μ±…μž„μ„ 뢄리할 λ•Œ κ°€μž₯ μ–΄λ €μ› λ˜ λΆ€λΆ„μž…λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ BlackjackGameReferee 같이 νŠΉμ • κ·œμΉ™μ— 따라 값을 κ³„μ‚°ν•˜κ±°λ‚˜ λ³€ν™˜λ§Œ μˆ˜ν–‰ν•˜λŠ” ν΄λž˜μŠ€κ°€ μžˆμ„ λ•Œ,
이런 클래슀λ₯Ό λ³„λ„μ˜ 객체둜 λ‘λŠ” 것이 객체지ν–₯적으둜 μžμ—°μŠ€λŸ¬μš΄μ§€,
μ•„λ‹ˆλ©΄ λ‹¨μˆœν•œ static μœ ν‹Έ 클래슀둜 λ‘λŠ” 편이 더 μ μ ˆν•œμ§€ νŒλ‹¨ 기쀀이 아직 λͺ…ν™•ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ €λŠ” 가끔 이런 ν΄λž˜μŠ€λ“€μ„ λ§Œλ“€ λ•Œ μ‹€μ œλ‘œ 도메인 의미λ₯Ό κ°€μ§„ 객체라기보닀,
μžλ°”μ—μ„œ static λ©”μ„œλ“œλ₯Ό λ§Œλ“€ 수 있게 μ—΄μ–΄λ’€κΈ° λ•Œλ¬Έμ— νŽΈμ˜μƒ λ§Œλ“€μ–΄μ§€λŠ” 객체인 μ²™(?) ν•˜λŠ” 객체가 μ•„λ‹Œμ§€ 생각이 λ“­λ‹ˆλ‹€.

이런 μƒνƒœκ°€ μ—†λŠ” μœ ν‹Έμ„± 객체λ₯Ό 섀계해도 κ±΄κ°•ν•œκ±΄μ§€,
더 객체지ν–₯적으둜 ν’€μ–΄λ‚˜κ°ˆ 수 μžˆλŠ” 방식이 μžˆλ‹€λ©΄, μ–΄λ–€ 사고흐름을 ν•™μŠ΅ν•˜λ©΄ 쒋을지 썬의 쑰언을 κ΅¬ν•˜κ³ μ‹ΆμŠ΅λ‹ˆλ‹€!

@korogoo
Copy link
Author

korogoo commented Mar 15, 2026

리뷰 μš”μ²­ 이후에 ν•œ μž‘μ—…μž…λ‹ˆλ‹€!

- README.md μˆ˜μ •
- BlackjackConsoleBootstrap 클래슀 νŒ¨ν‚€μ§€ 이동
- record 클래슀의 λΆˆν•„μš”ν•œ getter μ˜€λ²„λΌμ΄λ“œ λ©”μ„œλ“œ 제거

DM 으둜 ν‘Έμ‹œ μ–‘ν•΄λ₯Ό κ΅¬ν•˜λ € ν–ˆμœΌλ‚˜, 였밀 μ€‘μ΄λΌμ„œ λͺ°λž˜(?) 컀밋 λ‘κ°œ 더 ν‘Έμ‹œ ν–ˆμŠ΅λ‹ˆλ‹€.

이번 사이클2 리뷰도 잘 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€! κ°μ‚¬ν•©λ‹ˆλ‹€.γ…Ž

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