GitHub 저장소
STEP 2 목표
변경 사항
개선할 점
배운 점
궁금한 점
후기
📆 기간 : 2023.03.02 ~ 2022.03.14
GitHub 저장소
STEP 2 목표
추가된 요구사항
- 플레이어는 베팅 금액을 정해야 한다.
- 베팅 금액에 따른 수익을 출력한다.
인스턴스 변수를 최대한 줄이고 싶었다. 그리고 최대한 깔끔하게 작성을 하고 싶었다. 내 희망사항..
변경 사항
BettingMoney
이번 미션에서 블랙잭의 betting금액을 추가하는 요구사항이 생겼다.
베팅 금액 값 객체로써 사용하였다. 이는 Player가 들고 있게 하려고 하였다. 그러다보니 1단계에서 상속구조 가 Player -> Dealer였는데 딜러또한 베팅금액이 필요해졌다. 그래서 구조를 바꾸기로 하였다.
Participant
위의 이유로 구조를 수정하게 되었다. dealer가 player를 상속받는 것이 아닌, 공통의 상위 개념 Participant를 가지고 dealer와 player가 각각 상속받도록 진행하였다. 그렇게 분리함으로써 플레이어만 베팅금액을 가지게 수정하였다.
Participant에서는 카트추가, 카드 합 계산,bust blackjack여부 등을 확인하는 딜러와 플레이어의 공통 메소드를 갖게 하였다.
GameResult
gameResult는 player별 승 무 패 map을 가지고 계산해준다. 처음에는 여기서 베팅 금액을 처리하였으나 결과가 베팅까지 처리할 책임은 없다고 판단되어 분리하였다.
Participants
이번 미션에서 인스턴스 변수 개수 제한이 있었다. 이를 최대한 지키고 싶었다. 인스턴스 변수 제한이라는 것은 곧 객체를 분리, 책임 분리라는 것을 생각했기에 Player와 Dealer정보를 가지고 있는 Participants를 추가하게 되었다.
Result
열거형 타입으로 승,무,패 블랙잭 승 에 따른 수익 비율을 계산하기 위해 만들었다. 단순 계산용으로 사용하였는데 이렇게 사용하는것에 대해 조금 의문이 든다.
개선할 점
Commit
step1에서의 구조적 문제로 step2 구현에 애를 먹었다. 구조를 다시 작성하였고 설계하다보니 step2에서 ReadMe 수정을 못했다. 가장 기본적인거였는데 실수한 것이 아쉽다.
배운 점
궁금한 점
View에서 출력은 어느정도 수준까지 가능한 것일까
결과값을 저장하기위해 컬렉션들을 사용하였다. 이를 출력에 그대로 가져와서 OutputView에서 처리하였는데 이런 계산?적인 과정을 여기서 처리해도 되는지에 대한 의문이 있다.
Map의 결과를 출력하기 위한 로직 같은 것들은 View에서 처리해도 된다. 출력을 위하기 때문이다. 하지만 비즈니스 로직과 같은 개념이 들어간다면 View보다는 Domain의 역할이 크다.
후기
블랙잭.. 도메인 간 관계가 복잡해서 어려웠고 코드를 깔끔하게 짜는 것에 대한 어려움이 너무 많았다.
미션을 하면서 느낀 것은 더 나은 방법이 있음에도 과거의 안좋지만 편하고 익숙한 방식을 사용한다는 나의 문제가 컸다. 이를 계기로 최대한 새로운 스킬을 학습하여 실제로 적용해보려고 노력하고 있다. 비록 이번에는 상태 패턴을 적용하지는 못하였으나 체스에서는 적용하겠다고 굳게 다짐한다 ..
'우아한테크코스' 카테고리의 다른 글
[우아한테크코스 5기] 체스 2단계 학습 로그 (0) | 2023.04.02 |
---|---|
[우아한 테크코스 5기] 체스 1단계 학습 로그 (0) | 2023.03.26 |
[우아한 테크코스 5기] 블랙잭 1단계 학습 로그 (0) | 2023.03.12 |
[우아한 테크코스 5기] 사다리 타기 2단계 학습 로그 (8) | 2023.02.26 |
[우아한 테크코스 5기] 사다리 타기 1단계 학습 로그 (0) | 2023.02.19 |