[우아한테크코스] 3월 15일 TIL

less than 1 minute read

오늘 배운 것

  1. 블랙잭 피드백 정리

블랙잭 2단계 피드백

  1. 접근 지정자 보고 또 보기
    외부에서 사용하지 않으면 private, 상속자들만 사용하면 protected
  2. output에서 .get.get을 사용하게 되는 것
    어느정도 허용하나 거슬리면 의미 있는 정도로 나눠도 좋다.
    public Stream<Card> getCardStream() {
     return cards.stream();
    }
    

    위와 같은 방식으로 전달해줘도 된다.

  3. 전략패턴 적용
    로또에서 NumbersGenerator 와 이를 상속하는 RandomNumbersGenerator가 있던 것처럼 CardsGenerator를 구현하는 DeckGenerator가 있을 수 있다.
    확장성이 커진다는 장점이 있으니 사용하는 것이 좋을 듯 하다.
  4. 초기화
    Player의 멤버 변수 money에 대해 생성자에 초기화가 없어 makeProfit 메서드 없이 getMoney를 하면 NPE가 발생할 수 있다.
    public 메서드는 언제 어디서나 사용할 수 있게 만들어야 한다.
  5. 객체 간의 비교
    dealer에게도 PlayerState가 존재하는데 PlayerState에게 dealer 인자를 넘겨 비교하는 것에 어색함이 있으니 dealer의 PlayerState를 넘기도록 하자.
  6. 상태 패턴의 가치
    상태 패턴 이전에는 결과를 계산할 때 상태와 함께 점수를 계산했지만, 적용 후에는 상태 별로 최소한의 역할을 가져갔으므로 객체 분리가 잘 되었다!
  7. test
    test가 문서의 역할을 할 수 있으므로 DisplayName은 최대한 상세히 적는 것이 좋다.
    확실하게 에러가 나는 곳을 구분하기 위해 assertThatThrownBy 사용 시에 딱 그것을 검사할 것을 제외하고는 밖에서 선언하는 것이 좋다.