리팩토링의 핵심은 겉보기 동작의 유지
"코드가 깨졌다면 그것은 리팩터링이 아니라 어설픈 리스트럭쳐링"
그것을 보장해 주는 것이 테스트
테스트를 작성하기 가장 좋은 시점은 프로그래밍을 시작하기 전
테스트를 작성하다 보면 원하는 기능을 추가하기 위해 무엇이 필요한지 고민하게 된다.
구현보다 인터페이스에 집중하게 된다면 장점도 있다. 게다가 코딩이 완료되는 시점을 전확하게 판단할 수 있다 .테스트를 모두 통과한 시점이 바로 코드를 완성한 시점이다.
TDD 테스트 주도 개발
(처음에는 통과하지 못할) 테스트를 작성하고, 이 테스트를 통과하게끔 코드를 작성하고, 결과 코드를 최대한 깖끔하게 리팩터링하는 과정을 짧은 주기로 반복.
이러한 테스트-코딩-리팩터링 과정을 한 시간에도 여러 차례 진행하기 때문에 코드를 대단히 생산적이면서도 차분하게 작성할 수 있다.