12장 드디어, 더하기
큰 테스트를 작은 테스트($5 + 10CHF에서 $5+ $5로)로 줄여서 발전을 나타낼 수 있도록 했다.
우리에게 필요한 계산(computation)에 대한 가능한 메타포들을 신중히 생각해봤다.
새 메타포에 기반하여 기존의 테스트를 재작성했다.
테스트를 빠르게 컴파일 했다.
그리고 테스트를 실행했다.
진짜 구현을 만들기 위해 필요한 리팩토링을 약간의 전율과 함께 기대했다.
13장 진짜로 만들기
모든 중복이 제거되기 전까지는 테스트를 통과한 것으로 치지 않았다.
구현하기 위해 역방향이 아닌 순방향으로 작업했다.
앞으로 필요한 것으로 예상되는 객체(Sum)의 생성을 강요하기 위한 테스트를 작성했다.
빠른 속도로 구현하기 시작했다.(Sum의 생성자)
일단 한 곳에 캐스팅을 이용해서 코드를 구현했다가, 테스트가 돌아가자 그 코드를 적당한 자리로 옮겼다.
명시적인 클래스 검사를 제거하기 위해 다형성을 사용했다.
14장 바꾸기
필요할 거라고 생각한 인자를 빠르게 추가했다.
코드와 테스트 사이에 있는 데이터 중복을 끄집어냈다.
자바의 오퍼레이션에 대한 가정을 검사해보기 위한 테스트(testArrayEquals)를 작성했다.
별도의 테스트 없이 전용(private) 도우미(Helper)클래스를 만들었다.
리팩토링하다가 실수를 했고, 그 문제를 분리하기 위해 또 하나의 테스트를 작성하면서 계속 전진해 가기로 선택했다.