> For the complete documentation index, see [llms.txt](https://seokrae.gitbook.io/sr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://seokrae.gitbook.io/sr/java-1/java/tdd/racing.md).

# 자동차 레이싱

## 1단계 학습 테스트

* [x] [1단게 학습 테스트](https://github.com/next-step/java-racingcar/pull/1847#pullrequestreview-601760737)

## 2단계 문자열 계산기

* [x] [2단계 문자열 계산기](https://github.com/next-step/java-racingcar/pull/1914#pullrequestreview-605336872)
  * enum을 사용한 상태 값과 행위에 대한 코드 응집성 증대
  * 하나의 메서드 안에 15줄 이하로 작성하기

![uml](/files/-MXqUA32GVRZF53B5YM6)

## 3단계 자동차 경주

* [x] [3단계 자동차 경주](https://github.com/next-step/java-racingcar/pull/1960#pullrequestreview-607170886)
  * [특정 역할이 없는 코드 삭제](https://github.com/next-step/java-racingcar/pull/1960#discussion_r589048328)
  * [특정 객체에 종속적인 상수는 공통이 아닌 해당 객체에서 관리](https://github.com/next-step/java-racingcar/pull/1960#discussion_r589048600)
  * [연산, 전위 후위 연산자보다 가독성이 좋은 방법 찾기](https://github.com/next-step/java-racingcar/pull/1960#discussion_r589049127)
  * [하나의 메서드에 두 가지 이상 기능으로 인한 가독성, 테스트하기 힘든 코드 개선 필요](https://github.com/next-step/java-racingcar/pull/1960#discussion_r589050223)
  * [클래스명은 명사로 작성하기](https://github.com/next-step/java-racingcar/pull/1960#discussion_r590055725)
  * [메서드명은 동사로 작성하기](https://github.com/next-step/java-racingcar/pull/1960#discussion_r590056162)
  * [public, protected 메서드에 대한 테스트 코드 작성 필요](https://github.com/next-step/java-racingcar/pull/1960#discussion_r590072116)
  * [builder 보다 formatter 사용하기](https://github.com/next-step/java-racingcar/pull/1960#discussion_r590075327)
  * [멤버 변수는 2개까지만 사용하기](https://github.com/next-step/java-racingcar/pull/1960#discussion_r590078081)
  * [객체 비교를 위해 equals, hashcode 작성하기](https://github.com/next-step/java-racingcar/pull/1960#discussion_r590105669)

![uml](/files/-MXqUA33mqr-FCpQL1Ha)

## 4단계 자동차 경주

* [x] [4단계 자동차 경주(우승자)](https://github.com/next-step/java-racingcar/pull/2013)
  * [원시 값을 감싸는 클래스로 만들어 객체를 비교 하는 방식으로 개선](https://github.com/next-step/java-racingcar/pull/2013#pullrequestreview-609736875)

![uml](/files/-MXqUA34b80mxsuNkgj4)

## 5단계 자동차 경주

* [x] [5단계 자동차 경주(리펙토링)](https://github.com/next-step/java-racingcar/pull/2037)
  * [객체 비교 테스트](https://github.com/next-step/java-racingcar/pull/2037#discussion_r593197783)
  * [메서드 시그니처와 다른 로직](https://github.com/next-step/java-racingcar/pull/2037#discussion_r593202597)
  * [객체의 역할과 책임](https://github.com/next-step/java-racingcar/pull/2037#discussion_r593203847)

![uml](/files/-MXqUA35Tq2o9qT1iuoU)
