🚀 기능 요구 사항
초간단 자동차 경주 게임을 구현합니다.
- 주어진 횟수 동안 n대의 자동차는 전진 또는 멈출 수 있다.
- 각 자동차에 이름을 부여할 수 있다. 전진하는 자동차를 출력할 때 자동차 이름을 같이 출력한다.
- 자동차 이름은 쉼표(,)를 기준으로 구분하며 이름은 5자 이하만 가능하다.
- 사용자는 몇 번의 이동을 할 것인지를 입력할 수 있어야 한다.
- 전진하는 조건은 0에서 9 사이에서 무작위 값을 구한 후 무작위 값이 4 이상일 경우이다.
- 자동차 경주 게임을 완료한 후 누가 우승했는지를 알려준다. 우승자는 한 명 이상일 수 있다.
- 우승자가 여러 명일 경우 쉼표(,)를 이용하여 구분한다.
- 사용자가 잘못된 값을 입력할 경우 IllegalArgumentException을 발생시킨 후 애플리케이션은 종료되어야 한다.
✏️ 구현할 기능 목록
1주차에 했던 것처럼 먼저 다음과 같이 구현할 기능 목록을 정리하였습니다.
- 게임 시작 기능을 구현합니다.
- 사용자로부터 경주 할 자동차 이름과 이동을 시도할 횟수를 입력받습니다.
- 잘못된 값을 입력했다면 IllegalArgumentException 예외 발생 후 애플리케이션을 종료합니다.
- 자동차의 개수가 2개 미만인 경우
- 앞뒤 공백을 제거하면 자동차의 이름이 0자인 경우
- 자동차의 이름이 5자를 초과한 경우
- 자동차의 이름이 중복되는 경우
- 시도할 횟수에 수가 아닌 값을 입력한 경우
- 시도할 횟수에 0 이하의 값 또는 int 범위를 초과하는 값을 입력한 경우
- 각 자동차 이름마다 객체를 생성합니다.
- 해당 객체는 자동차 이름과 전진한 횟수를 가집니다.
- 각 자동차마다 0에서 9 사이에서 무작위 값을 구한 후 무작위 값이 4 이상일 경우 전진합니다.
- 각 라운드마다 자동차들의 전진 결과를 출력합니다.
- 자동차 경주 게임이 끝났다면 각 자동차의 전진한 횟수를 비교하여 우승자를 출력합니다.
🤔 고민한 점
1. 테스트 코드 작성
사실 이번 주차에는 테스트 코드 작성에만 시간을 쏟았다고 해도 과언이 아니었습니다.
그 동안 테스트 코드를 작성해본 적이 없었을 뿐만 아니라, JUnit과 AssertJ에 대해서도 처음 들어봤습니다.
먼저 JUnit과 AssertJ에 대해서 공부하여 기본적인 테스트 코드 작성법을 배웠습니다.
@Test 뿐만 아니라 여러 개의 테스트를 한번에 할 수 있는 @ParameterizedTest까지 학습했습니다.
이렇게 학습한 내용을 바탕으로 각 함수별로 테스트 코드를 작성하였습니다.
2. 커밋 메시지 작성
해당 작업한 내용을 한번에 알 수 있도록 커밋 메시지를 작성하였습니다.
아래의 커밋 메시지 규약을 보면 커밋 메시지에도 형식이 있다는 것을 알게 되었습니다.
기존에는 간단하게 무엇을 했는지에 대해서만 적었다면, 이번에는 최대한 커밋 메시지 형식에 맞춰서 커밋 메시지를 작성했습니다.
💡 느낀 점
- 테스트 코드를 작성하면서 기능을 분석하고 예상 동작을 정의하게 되면서 코드에 대한 깊은 이해가 가능했습니다.
- 특히, 테스트 코드를 통해 예외 상황에 대한 처리 방법을 배우게 되어 테스트 코드 작성이 코드의 품질 향상에 어떻게 기여할 수 있는지 확실히 깨달았습니다.
- 이번 주차에 학습한 내용을 바탕으로 다음 주차에는 TDD 방식을 공부하고 적용해보고 싶습니다.
728x90
반응형
'기타 > 우테코' 카테고리의 다른 글
[우테코] 프리코스 4주차 미션 - 크리스마스 프로모션 (0) | 2023.11.16 |
---|---|
[우테코] 프리코스 3주차 미션 - 로또 (0) | 2023.11.10 |
[Kotlin] JUnit의 Assert 함수 사용하기 (0) | 2023.11.09 |
[Kotlin] JUnit으로 테스트 코드 작성하기 (0) | 2023.11.07 |
[우테코] 프리코스 1주차 미션 - 숫자 야구 (0) | 2023.10.27 |