2022년 정리4

조용휘·2023년 1월 22일
0

2022

목록 보기
4/10

기능 구현 목록

1차 기능 구현 목록

  1. 시작문구 출력
    1. “숫자 야구 게임을 시작합니다.”
  2. 랜덤 3자리 픽
    1. 데이터 베이스 클래스 구현
      1. 필드
        1. 정답 List
        2. 사용자의 인풋 List
        3. Strike 갯수
        4. ball 갯수
        5. 낫싱
    2. 랜덤 3자리 생성하여 데이터베이스 클래스에 저장.
      1. GameManager 클래스 생성하여 게임의 처음과 끝 담당.
  3. 정답을 Collection API로 받음
  4. 입력을 Collection API로 받음
  5. Strike 비교
  6. Ball 비교
  7. 낫싱은 S, B가 없을 때
  8. 정답이 아닐 경우의 결과 출력
  9. 정답일 경우 결과 출력, 1or2 입력 받음
  10. 예외 처리

1차 최종 결과

뭔가 어수선하다. 기능을 분야별로 모으거나 세분화 해보자.

메인에서 만들어지는 객체가 GameManager, Database, Output, CompareNumbers 타입이다.

  1. SRP 체크
    1. GameManager

      기능 자체가 너무 큰 것 같다. 세분화 해보자.

      • setAnswer와 userInput은 “setting” 기능이므로 모아서 set class로 따로 구현?
      • checkInput은 인풋값 예외를 “확인”
      • isFinish나 isAgain은 게임 실행 과정에서 조건을 “확인”
      • “확인”만 하는게 아니라 “예외”도 같이 던져주고 있음.
    2. Output

      • 조건에 맞춰 출력을 하는데 이는 “확인”후 “출력”이다.
    3. CompareNumbers

      • 숫자 “확인” 후 “저장” → 저장을 할 필요가 있나? → checkNumber를 static으로 구현하여 메소드만 사용하도록 하였다. → SRP원칙 지킨듯?
    4. Database

      1. 뭔가 다른 클래스들에 비해 그나마 잘 정리된 클래스같다.
      2. setter와 getter가 많아 클래스가 비대해 보이는데 괜찮은건가?

IsAgain에서 userInput 더 좋게 리펙토링 가능?

Exception은 exception끼리

UserInput 입력값이므로 입력은 입력끼리

게임 운영중 나오는 isFinish나 isAgain끼리

GameManager를 게임의 전체적인 진행만 관리하는 클래스로

profile
Progress Gradually, Never Stop

0개의 댓글