[1단계 - 블랙잭] 초코칩(권기호) 미션 제출합니다. #617
Conversation
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Co-Authored-By: eunjungL <62099953+eunjungL@users.noreply.github.com>
Hyunta
left a comment
There was a problem hiding this comment.
안녕하세요 초코칩,
블랙잭 미션 잘 구현해주셨네요ㅎㅎ
피드백이 너무 많아져서 나눠서 리뷰해드리도록 하겠습니다.
커멘트 남긴 내용들 확인해보시고 궁금한 내용은 DM이나 커멘트로 남겨주세요.
src/main/java/blackjack/domain/card/factory/TrumpCardFactory.java
Outdated
Show resolved
Hide resolved
src/main/java/blackjack/domain/card/factory/TrumpCardFactory.java
Outdated
Show resolved
Hide resolved
| } | ||
|
|
||
| do { | ||
| player.draw(dealer); |
There was a problem hiding this comment.
[P2]
Player가 Dealer를 알 필요가 있을까요?
구조에 대해서 한번 고민을 해보시면 좋을 것 같습니다.
Player, Dealer, Deck 3가지 객체가 서로 관계가 깊어보여요.
Player는 Draw를 할 때 Deck에 접근하기 위해서 Dealer를 거쳐야 합니다.
그럼 그냥 Dealer가 draw()를 해서 바로 Player에게 전달해줄 수 있지 않을까요?
더 나아가서 지금은 BlackJackGame 객체 안에서 입출력 관리 + 게임 로직 관리가 이뤄지고 있다보니 역할이 방대해진 것 같아요.
게임 로직 관리 중에서 Player가 카드를 계속 받을지 말지 결정하는 로직 을 제외하고는 별도의 객체 안에서 관리되어지는게 어떨까 싶습니다.
There was a problem hiding this comment.
그럼 그냥 Dealer가 draw()를 해서 바로 Player에게 전달해줄 수 있지 않을까요?
맞습니다. 강한 결합도 때문에 테스트까지 힘들어져서, Player에서 Card를 넘겨받아 draw()할 수 있게 수정했습니다.
더 나아가서 지금은 BlackJackGame 객체 안에서 입출력 관리 + 게임 로직 관리가 이뤄지고 있다보니 역할이 방대해진 것 같아요.
게임 로직 관리 중에서 Player가 카드를 계속 받을지 말지 결정하는 로직 을 제외하고는 별도의 객체 안에서 관리되어지는게 어떨까 싶습니다.
Blackjack의 Dealer, Player 생성과 첫 두 장 분배를 BlackjackInitializer로 분리했습니다.
There was a problem hiding this comment.
BlackjackInitializer가 꼭 필요한지 의문이 드네요,
Dealer 클래스에서 Dealer를 생성하고,
Players 클래스에서 Players를 생성하고,
BlackjackGame에서 카드를 배분해줘도 되지 않을까요?
|
안녕하세요 초코칩
저는 둘 다 final을 붙이지 않습니다, 불필요하다는 생각이 조금 강한 것 같아요.
아 이런 의도에서 인터페이스를 분리하신 거군요ㅎㅎ
저도 동의합니다..ㅎㅎ |
의도를 파악하기 좋았다고 생각합니다. 예를 들어 작성해주신 리뷰 중에 |
Hyunta
left a comment
There was a problem hiding this comment.
안녕하세요 초코칩,
미션에 대해서 많이 고민하신게 느껴지네요.👍🏻
코드가 많이 개선된 것 같습니다
BlackjackInitializer와 관련해서 커멘트 남겼는데 확인부탁드릴게요.
고생하셨습니다!
블랙잭
안녕하세요, 아서. 6기 백엔드 초코칩입니다. 이번 미션에서는 블랙잭을 구현했습니다.
부탁
커뮤니케이션 비용을 줄이기 위한 Pn 룰
PR 내용을 보시기 전에 저와 리뷰어님의 커뮤니케이션 비용을 줄이기 위해 Pn 룰을 부탁드리고 싶습니다. Pn룰을 통해 리뷰어님이 저에게 꼭 고쳤으면 하는 리뷰와 그렇지 않은 리뷰를 범위로 나누어 더욱 전달이 효과적으로 이루어질 것 같습니다.
기능 요구사항(step1)
덱
플레이어들
딜러
플레이어
카드 손패
카드
입출력
리팩터링
protected필드 직접 접근 문제 해결한다.Participant를Gamer로 변경한다.Judge의 테스트를 진행한다.Rank,Suit를 card 패키지로 변경한다.calculateAce메서드명을 변경한다.BlackjackResult에서 count 대신 getter로 변경한다.BlackjackGame메서드 분리질문
final키워드를 이용하여 매개변수에 재할당을 기본적으로 방지하고 있습니다. 그러다보니 매개변수 부분의 길이가 아래와 같이 길어져 매개변수 부분에 개행이 들어가게 됩니다. 아서는final키워드에 대한 컨밴션을 어떻게 적용하는지 궁금합니다. 또한 일반 변수에도final을 붙이는지도 궁금합니다.finalfinalCardFactory에서 다른 카드도 구현받을 수 있게 설계하고 싶었으나, 결국getSuit와getRank때문에CardFactory가TrumpCard에 종속적이게 되었습니다. 이를 수정할 수 있는 방법이 있을까요?아쉬운점
Player가 draw하는 과정에서Dealer를 넘기게 했기 때문에 테스트가 많이 힘들었습니다.Dealer가 아닌Card만 넘겨줬다면, 결합도를 줄여 테스트를 용이하게 할 수 있었을 것 같습니다.감사합니다.