- 자동차 경주 게임 요구사항을 파악한다.
- 요구사항에 대한 구현을 완료한 후 자신의 github 아이디에 해당하는 브랜치에 Pull Request(이하 PR)를 통해 코드 리뷰 요청을 한다.
- 코드 리뷰 피드백에 대한 개선 작업을 하고 다시 PUSH한다.
- 모든 피드백을 완료하면 다음 단계를 도전하고 앞의 과정을 반복한다.
- 사용자가 몇 대의 자동차로 몇 번의 이동을 할 것인지 입력하는 기능
- (추가) 자동차의 속성 정의
- 입력받은 자동차 수에 따라 자동차를 생성하는 기능
- 생성된 자동차를 화면에 출력하는 기능
- 자동차의 전진 여부를 무작위으로 결정하는 기능
- 자동차가 전진 할 경우 화면에 출력될 변화를 설정하는 기능
- 입력받은 실행 횟수에 따라 경주를 실행하는 기능
- 실행 결과를 화면에 출력하는 기능
- (추가) 구조 리팩토링
- 자동차 이름들을 입력하여 자동차 대수를 결정
- 자동차 객체에 carName 필드 추가
- 자동 이름 입력하는 UI 추가
- 입력받은 자동차 이름들을 ','로 구분해서 배열/리스트로 저장
- 자동차 이름들(CarNames) 일급콜렉션 클래스 추가
- 입력된 자동차 이름들(또는 배열/리스트의 길이) 만큼 자동차 대수 생성하도록 수정
- 테스트 코드
- 자동차 이름 입력 유효성 체크
- 테스트 코드
- 경주완료 후 우승자 선정 및 출력
- 우승자들(Winners) 일급콜렉션 클래스 추가
- 우승자 선정 로직 추가
- 테스트 코드
2주차 수업시간에 배운 TDD로 리팩토링 도전
- 기존의 모든 코드 삭제
- 테스트 코드 작성 (CarTest)
- Car 객체 생성
- 자동차 이름(name), 위치(position) 속성 추가
- Car 객체의 원시값인 멤버변수(name, position)를 객체로 분리하여 포장
- 테스트 코드 작성 (NameTest)
- 테스트 코드 작성 (PositionTest)
- 자동차 전진(move) 기능 추가
- Car 객체 생성
- 테스트 코드 작성 (CarNamesTest)
- CarNames 객체 생성
- 입력값 변환하여 저장 (String -> List)
- 정적 팩토리 메서드(from) 추가
- CarNames 객체를 일급컬렉션으로 변경 및 테스트
- 테스트 코드 작성 (CarsTest)
- Cars 일급컬렉션 생성
- 정적 팩토리 메서드(of) 추가
- 테스트 코드 작성 (RoundTest)
- Round 객체 생성
- 정적 팩토리 메서드(from) 추가
- Car 객체에 자동차 전진 결정 메서드 추가
- 테스트 코드 작성 (CarTest)
- Controller 생성
- RandomNumber 생성 기능 추가
- 테스트 코드 작성 (RandomNumberTest)
- RandomNumber 객체 생성
- 정적 팩토리 메서드(generate) 추가
- 테스트 코드 작성 (WinnersTest)
- Winners 일급컬렉션 생성
- 정적 팩토리 메서드(from) 추가
- 우승자 선정 로직 추가
- View 생성
- InputView 생성
- OutPutView 생성
- 어플리케이션 실행 테스트