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

[자동차경주] 박정현 미션 제출합니다. #1475

Open
wants to merge 13 commits into
base: main
Choose a base branch
from

Commits on Oct 27, 2024

  1. docs(readme): 프로젝트 소개 및 기능 목록 작성

    개발 전에 프로젝트 기능 목록에 대해 정리하였다.
    각 목록은 TDD를 생각하며 나눴다.
    각 기능 목록을 모두 구현 후에 리펙토링 및 추가 기능을 추가한다.
    icekimchi committed Oct 27, 2024
    Configuration menu
    Copy the full SHA
    d8345c7 View commit details
    Browse the repository at this point in the history
  2. feat(RacingCar): 유효한 입력 및 입력 예외 처리

    유효한 입력을 받았을 때, 쉼표로 구분하여 해시맵에 올바르게 저장되는지 확인한다.
    Application.java에서 입력을 받은 후 run()함수로 넘겨준다.
    run 함수에서는 blank, null 처리 후에 쉼표(,)로 구분하고, 해시맵에 저장한다. 자동차 이름의 길이가 5 초과일 경우에는 예외를 발생시킨다.
    icekimchi committed Oct 27, 2024
    Configuration menu
    Copy the full SHA
    a8e0671 View commit details
    Browse the repository at this point in the history
  3. test(ApplicationTest): 자동차 이름의 길이가 5이상인 경우 예외 테스트

    쉼표로 구분한 뒤에 자동차의 이름의 길이가 5를 넘으면 IllegalArgumentException을 발생시킨다.
    icekimchi committed Oct 27, 2024
    Configuration menu
    Copy the full SHA
    d7072ff View commit details
    Browse the repository at this point in the history
  4. feat(RacingCar): 각 라운드별 실행결과 출력 및 테스트

    입력받은 roundCount만큼 반복해 게임을 진행시킨다.
    randomMove가 4 이상일 때는 전진하고, 4 미만일 경우 멈춘다.
    BeforEach를 통해 Test를 실행할 때마다 리스트를 초기화했다.
    유효한 값을 입력했을 때, 라운드를 진행하면 해시맵이 달라지므로 Key값만 비교해 자동차 이름이 잘 입력되었는지만 확인했다.
    icekimchi committed Oct 27, 2024
    Configuration menu
    Copy the full SHA
    ece39d1 View commit details
    Browse the repository at this point in the history
  5. feat(RacingCar): 최종 우승자 출력 및 테스트

    컬렉션을 통해 해시맵 value의 최대값(winValue)을 찾았다.
    stream을 사용해 winValue와 같은 경우 key값을 findWinner에 삽입
    컬렌션을 사용해 join() 함수로 쉼표(,)로 결과를 출력하였다.
    icekimchi committed Oct 27, 2024
    Configuration menu
    Copy the full SHA
    d0e4f94 View commit details
    Browse the repository at this point in the history

Commits on Oct 28, 2024

  1. refactor(view): inputView, outputView 생성 후 분리

    View 패키지에 inputView, outputView를 작성하였다.
    camp.nextstep.edu.missionutils.Console을 통해 입력받는다.
    outputView에서는 결과를 출력하는 부분을 두 개의 함수로 나타냈다.
    icekimchi committed Oct 28, 2024
    Configuration menu
    Copy the full SHA
    df74adb View commit details
    Browse the repository at this point in the history
  2. refactor(ErrorMessage): ErrorMessage를 통해 예외 설명

    각각의 예외에 해당하는 메시지를 정의했다.
    getMessage() 함수로 해당 메시지를 불러온다.
    icekimchi committed Oct 28, 2024
    Configuration menu
    Copy the full SHA
    30289af View commit details
    Browse the repository at this point in the history
  3. refactor(Validator): 예외 처리를 담당하는 Validator 생성

    예외 상황을 함수로 정의하고, 해당하는 메시지를 ErrorMessage를 통해 출력한다.
    roundCount는 숫자여야 하며 1 이상이어야 한다.
    carNameString은 빈칸이 없어야 하며 carName은 길이가 5 이하여야 한다. carName은 중복될 수 없다.
    icekimchi committed Oct 28, 2024
    Configuration menu
    Copy the full SHA
    dec2dab View commit details
    Browse the repository at this point in the history
  4. refactor(InputParser): 입력 데이터를 검증하는 로직을 구현

    InputView를 통해 입력받은 데이터를 Validator로 검증한다.
    carNameString을 쉼표(,)로 구분하고 예외 처리하여 carNames 리스트를 반환한다.
    roundCountString을 검증하여 int형식의 roundCount로 반환한다.
    icekimchi committed Oct 28, 2024
    Configuration menu
    Copy the full SHA
    c2e702a View commit details
    Browse the repository at this point in the history
  5. refactor(RacingCarService): 경기를 진행하고 우승자를 찾는 로직 구현

    initCarList()로 입력받은 데이터로 해시맵을 생성한다.
    raceAllRound()를 통해 roundCount만큼 경기를 진행한다.
    각 경기가 진행될 때마다 게임 결과를 출력하며, 경기가 종료되면 getWinnerList()를 통해 우승자 리스트를 가져온다.
    icekimchi committed Oct 28, 2024
    Configuration menu
    Copy the full SHA
    a048e74 View commit details
    Browse the repository at this point in the history
  6. refactor(RacingCarController): 컨트롤러로 분리 후 의존성 주입과 로직 구현

    race()함수를 통해 데이터를 입력받고 경기를 진행하는 run()을 실행시킨다.
    run()에서는 service의 raceAllRound()로 경기 후 winnerList를 불러온다.
    이를 출력함수 printWinner()로 경기 결과를 출력한다.
    icekimchi committed Oct 28, 2024
    Configuration menu
    Copy the full SHA
    27bc4ad View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    c1b4510 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    2ee1c34 View commit details
    Browse the repository at this point in the history