우승자 기능을 추가한다.
3단계에 이은 초간단 자동차 경주 게임을 구현한다.
- 각 자동차에 이름을 부여할 수 있다. 자동차 이름은 5자를 초과할 수 없다.
- 전진하는 자동차를 출력할 때 자동차 이름을 같이 출력한다.
- 자동차 이름은 쉼표(,)를 기준으로 구분한다.
- 자동차 경주 게임을 완료한 후 누가 우승했는지를 알려준다. 우승자는 한 명 이상일 수 있다.
위 요구 사항에 따라 3대의 자동차가 5번 움직였을 경우 프로그램을 실행한 결과는 다음과 같다.
경주할 자동차 이름을 입력하세요(이름은 쉼표(,)를 기준으로 구분).
현구막,아이들나라,전시편성짱
시도할 횟수는 몇 회인가요?
5
실행 결과
현구막 : -
아이들나라 : -
전시편성짱 : -
현구막 : --
아이들나라 : -
전시편성짱 : --
현구막 : ---
아이들나라 : --
전시편성짱 : ---
현구막 : ----
아이들나라 : ---
전시편성짱 : ----
현구막 : -----
아이들나라 : ----
전시편성짱 : -----
현구막, 전시편성짱 (이)가 최종 우승했습니다.
- 모든 로직에 단위 테스트를 구현한다.
- 단, UI(println 등) 로직은 제외
- 핵심 로직을 구현하는 코드와 UI를 담당하는 로직을 구분한다.
- UI 로직을 InputView, ResultView와 같은 클래스를 추가해 분리한다.
- 함수(또는 메소드)의 길이가 10라인을 넘어가지 않도록 구현한다.
- 함수(또는 메소드)가 한 가지 일만 잘 하도록 구현한다.
- 기능을 구현하기 전 README.md 파일에 구현할 기능 목록을 정리해 추가한다.
- git의 commit 단위는 README.md 파일에 정리한 기능 목록 단위로 추가한다.
- 사용자가 입력한 이름의 숫자 만큼 자동차 대수를 생성한다.
- 자동차는 자동차 이름과 위치 정보를 가지는 Car 객체를 추가해 구현한다.
PR 이 길고 장황해지면, 리뷰어가 코드를 읽고 이해하기 너무 어려워진다. 작은 단위로 메서드와 클래스를 나누는 것 만큼, 커밋과 PR 을 나누는 것에 대해서도 고민해보자.