Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[2단계 - 블랙잭 베팅] 제프(변우영) 미션 제출합니다. #890

Open
wants to merge 40 commits into
base: horizonpioneer
Choose a base branch
from

Conversation

horizonpioneer
Copy link

체크 리스트

  • 미션의 필수 요구사항을 모두 구현했나요?
  • Gradle test를 실행했을 때, 모든 테스트가 정상적으로 통과했나요?
  • 애플리케이션이 정상적으로 실행되나요?
  • 프롤로그에 셀프 체크를 작성했나요?

https://prolog.techcourse.co.kr/studylogs/3989

객체지향 생활체조 요구사항을 얼마나 잘 충족했다고 생각하시나요?

1~5점 중에서 선택해주세요.

  • 1 (전혀 충족하지 못함)
  • 2
  • 3 (보통)
  • 4
  • 5 (완벽하게 충족)

선택한 점수의 이유를 적어주세요.

객체를 작게 유지했는지에 대한 확신이 서지 않고, 디미터 법칙를 제대로 지키지 못했습니다.

어떤 부분에 집중하여 리뷰해야 할까요?

안녕하세요 매트!

step2를 진행하면서 궁금한 부분과 제 생각을 적어보았습니다.

이번엔 객체 지향적인 설계와 관련해서 리뷰해주시면 감사드리겠습니다!

1. step2에선 MVC 개념을 삭제했습니다.

스스로 도메인과 컨트롤러의 역할에 대해 잘 알지 못한채 MVC를 사용하는 것 같아 컨트롤러를 삭제하고 도메인이라는 개념을 해당 미션에서 삭제했습니다. 도메인은 핵심 비즈니스 모델, 컨트롤러는 도메인과 뷰를 연결해주는 창구라고 생각했었는데 담당 코치님과의 대화를 통해 잘못 알고 사용하고 있다는 생각이 들었습니다. 그래서 MVC를 나타내는 용어들을 삭제하고 패키지 및 코드를 재구성해보았는데, 큰 변화를 주었다는 생각이 들지 않습니다.

2. BlackJackGame에서 입출력을 인자로 받는 방식에 대해 피드백 받고 싶습니다.

BlackJackGame을 통합 클래스로 두어 게임을 진행하도록 했고, 입력과 출력 부분은 블랙잭 게임의 일부라고 보고 BlackJackGame 내부 메서드의 인자로 받는 방식을 사용해보기도 했습니다.

하지만 BlackJackGame이 게임을 관리하는 역할을 한다는 점에서, 입출력 객체를 인스턴스 변수로 두는 것이 더 명확한 책임 분리가 된다고 생각했습니다. 블랙잭 미션에서 게임 로직이 변경되더라도 입출력은 항상 필요한 요소이므로, 필드로 두는 것이 더 적절하다고 판단했는데 이에 대한 매트의 의견이 궁금합니다.

3. 객체 지향적인 설계 관점에서 매트의 의견을 듣고 싶습니다.

BlackJack 미션의 공통 피드백을 적용하기 전에, 제가 직접 설계한 방식에 대해 먼저 피드백을 받고 싶습니다.

현재 BlackJackGame의 play 메서드에서 PlayersBetCenter 객체를 생성하는데, 이 과정에서 입력 로직이 필요하기 때문에 해당 로직을 play 내부에서 처리했습니다. 좀 더 객체지향적으로 접근한다면 "참가자 관리" 역할을 하는 별도 객체를 만들 수도 있을 것 같지만, 입력 로직이 여러 객체를 오가게 되면 유지보수가 어려워질 것 같아 지금의 구조를 유지했습니다.

전체적인 객체 관계, 메시지 전달 방식, 그리고 BlackJackGame과 같은 통합 클래스에서 메서드를 구현하는 방식에 대한 피드백을 받고 싶습니다.

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