리팩터링은 여러 테스트를 작성한 후 한 번에 하거나 각 테스트를 작성한 후에 할 수 있다. 언제 하는지는 여러분 자유지만, 리팩터링 자체는 굉장히 중요하다. 기존 코드 동작을 보장하면서 가독성까지 챙길 수 있기 때문이다. 책 후반부에서 리팩터링 이야기를 자세하게 다룰 예정이다(8.2절).
Note ≣ | 리팩터링 정의
리팩터링이란 기능은 바꾸지 않으면서 코드 구조를 개선하는 것이다. 작게는 함수 이름을 바꾸는 것도 리팩터링이라고 할 수 있다. 큰 함수를 작은 함수 여러 개로 나누는 것도 리팩터링이다. 코드는 여전히 같은 기능을 수행하지만 더 유지 보수하기 쉽고, 읽기 쉽고, 디버깅하기 쉽고, 수정도 쉽다.
앞서 설명한 TDD 단계들은 뭔가 대단한 것처럼 들리지만, 핵심은 매우 간단하다. TDD를 올바르게 사용하면 코드 품질이 크게 향상되고, 버그가 줄어들고, 코드에 대한 자신감이 높아지고, 버그를 찾는 시간이 단축되고, 코드 설계가 개선되며, 관리자 만족도가 높아진다. 하지만 TDD를 잘못 사용하면 프로젝트 일정이 밀리고, 시간 낭비가 발생하고, 동기 부여가 떨어지고, 코드 품질이 낮아질 수 있다. 이것은 양날의 검과 같으며 많은 사람이 직접 어려움을 겪으면서 깨닫는다.