Skip to content

Conversation

judy5050
Copy link

안녕하세요! 경록 리뷰어님 😊

연료주입과 블랙잭을 페어인 민철님,지원님과 함께 구현했습니다.
블랙잭 게임을 해본적이 없어 블랙잭 룰을 찾아보며 구현했는데
이번 미션이 제일 어려웠던거 같네요 😂

리뷰 잘 부탁드립니다. 감사합니다.

kworkbee and others added 30 commits February 11, 2022 16:16
기능 요구사항
- 각 보유 차량 (5대) 렌트할 때 대략적인 이동거리를 입력
  - 자동차 객체 생성 시 생성자에 이동거리 주입
    - 연료량 계산
- 연료 주입에 필요한 연료량 보고서 생성

프로그래밍 요구사항
- 상속 / 추상 메서드 활용
- 조건문 X

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- 주입 연료량 출력 보고서 정상 동작 여부 확인

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- 필요 기능 정의

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- Sonata
- K5
- Avante

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- 자동차 추가 (addCar)
- 주입 연료량 보고서 출력 (generateReport)

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
…utable

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
- List<Card> 최종 점수 반환 메서드 작성

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
- 각 카드 별 점수관련 클래스

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
- 모든 카드(52개)를 생성시점에 초기화
- 덱에서 한장을 카드를 뽑음
- 덱이 비면 예외

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
- 카드끼리의 비교를 위해 구현

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
- 카드를 더 뽑을 수 있는지를 boolean으로 반환하는 canDrawCard()

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
- 가지고있는 cards 객체에서 위임

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
- 21보다 작다면 한장 더 뽑을 수 있음

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
- Dealer
- Deck
- Players

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- Player

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- Card
- Cards
- Dealer
- Deck
- Person
- Player
- Score

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- Players

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
judy5050 and others added 24 commits February 17, 2022 21:47
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- MatchInfo
- ScoreInfo

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- InputView
- ResultView

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- 파산 여부
- 블랙잭 점수 (21점) 여부

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- activePlayer
- scoreInfo
- matchScore

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- 딜러 / 플레이어 점수 비교

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- CardNumberTest
- DealerTest
- DeckTest
- PlayersTest
- PlayerTest
- ScoreBoardTest
- ScoreTest

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
- Card
- CardNumber
- Cards
- Dealer
- Deck
- Person
- Player
- Players
- Score
- ScoreBoard

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
- CardInfo
- MatchInfo
- NameInfo
- ScoreInfo

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
- InputView
- ResultView

Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com>
Co-authored-by: minchul-son <smc5236@gmail.com>
Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Copy link

@Rok93 Rok93 left a comment

Choose a reason for hiding this comment

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

효정님 안녕하세요. 블랙잭 미션을 함께하게 된 김경록입니다. 🙇‍♂️
몇몇 코멘트들 남겨두었으니 확인해서 반영해주세요! 🙏
늦어서 정말 죄송합니다. 🙇‍♂️🙇‍♂️🥲

이해가 잘 안되거나 어려운 부분은 언제든지 DM주세요! 🙏

Comment on lines +5 to +7
double getDistancePerLiter();
double getTripDistance();
String getName();
Copy link

Choose a reason for hiding this comment

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

메서드 사이에는 한 줄 띄어서 가독성을 높여주세요! 🙏

Suggested change
double getDistancePerLiter();
double getTripDistance();
String getName();
double getDistancePerLiter();
double getTripDistance();
String getName();

Comment on lines +7 to +11
private final int distance;

public K5(final int distance) {
this.distance = distance;
}
Copy link

Choose a reason for hiding this comment

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

PassengerCar의 하위 구현체들은 모두 똑같은 상태 값(distance)과 (내부 구현이 완전히 똑같은 ) getTripDistance를 가지는 것 같아요. 👀

이 두 요소는 상위 클래스인 PassengerCar에 구현하면 중복된 코드를 줄일 수 있지 않을까요? 🤔

Comment on lines +14 to +15
private final Players players;
private final Dealer dealer;
Copy link

Choose a reason for hiding this comment

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

Controller는 상태를 가지면 안돼요. 👀
필요하다면 Controller의 메서드 안에서 객체를 직접 생성해서 사용해야해요. 😃

또한 Controller에 비즈니스 로직이 상당수 존재하는 것 같아요. 🙄
playersdealer를 상태로 가지는 새로운 객체(= BlackJack)를 만들어보면 어떨까요? 🤗

package blackjack.domain;

import blackjack.dto.CardInfo;
import blackjack.dto.MatchInfo;
Copy link

Choose a reason for hiding this comment

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

불필요한 import문은 제거해주세요! 🙏

public static final int DEALER_DRAW_LIMIT = 16;
private static final String DEALER_NAME = "딜러";

public Dealer(final String userName,final Cards cards) {
Copy link

Choose a reason for hiding this comment

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

습관적으로 코드를 자동 정렬하는 습관을 들이시면 좋아요. 🤗
mac의 경우 ⌘ + ⌥+ L 단축키로 코드 자동 정렬을 할 수 있어요. 😉

}

@Override
public CardInfo openCards() {
Copy link

Choose a reason for hiding this comment

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

추가로 도메인 객체의 리턴 값을 DTO로 바로 변환하여 반환하는 것 또한 View에 의존적인 코드라고 생각돼요. 🤔
반환 타입은 List 형태로 전달해보면 어떨까요? 🤔


@Override
public boolean canDrawCard() {
return !cards.blackjack() && !cards.isBust();
Copy link

Choose a reason for hiding this comment

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

Dealer는 cards.totalScore() <= DEALER_DRAW_LIMIT 조건을 만족하면 카드를 draw 할 수 있었어요. 🤗
Player 또한 cards.totalScore() <= 21를 만족하면 카드를 draw할 수 있지 않을까요? 🤔

}

public Score compareScore(final Dealer dealer) {
return Score.judge(cards, dealer.cards);
Copy link

Choose a reason for hiding this comment

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

객체의 상태 값에 바로 호출하지 말아주세요! 🙏
가급적 상태 값의 접근 제한자를 private로 둬서 외부에서 직접 접근하지 못하도록 방지해주세요! 😃
상속을 받는 경우 하위 구현체가 이 상태 값을 필요로 할 때가 있을거에요. 이런 경우에는 private 접근 제한자 때문에 이 상태 값에 직접 접근하지 못할거에요. 🥲 이런 경우에는 getter를 통해서 상위 부모 클래스의 상태 값에 접근하는 방법이 있어요. 😉

Comment on lines +33 to +34
players.initializeDeck(deck);
dealer.initializeDeck(deck);
Copy link

Choose a reason for hiding this comment

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

players가 아니라 더 상위 클래스인 Persons로 dealer와 players들을 동시에 묶는다면 이 로직은 persons.initializeDeck(deck);으로 한 번만 호출하도록 바꿔볼 수 있을 것 같아요. 🤗

Comment on lines +29 to +44
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Card card = (Card) o;
return suit == card.suit && cardNumber == card.cardNumber;
}

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

Choose a reason for hiding this comment

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

Card 객체의 동등성을 정의할 필요가 있나요? 🤔
만약 테스트 코드를 위한 equals & hashCode 정의라면 그 방법보다는 getter를 만들어서 상태 값이 실제 결과 값과 같은지 확인하는 테스트 코드로 변경하는 것이 좋다고 생각해요. 🤔

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.

4 participants