지금까지 테스트 주도 개발의 기본적인 내용에 대해 공부를 했다. 그런데 테스트 주도 개발이 포함하는 내용들만 가지고는 실무에 적용하기 힘들다. 실무에서 테스트 주도 개발을 사용하기 위해선 여러 가지 설계 기법들을 버무려야 한다.
앞으로는 실무에서 테스트 주도 개발과 자주 쓰일 수 있는 기법, 기술, 도구들에 대해서 공부할 예정이다.
우선 인터페이스와 구현의 설계 관점에서 살펴보자.
인터페이스와 구현은 코드를 구성하는 아주 중요한 두 요소이다. 두 요소의 역할을 떠올리고 설계 접근법에 대해 강의를 들으며 알아볼 예정이다.
MIT 교수 John Vogel Guttag에 따르면 추상화는 주어진 맥락에 관련된 정보들을 남기고 동시에 주어진 맥락과 관련없는 정보들을 잊어버리는 과정이다. 정리하면 추상화라는 것은 어떤 목적에 따라서 대상이 가지고 있는 특징들 중에 일부만 투영하는 것이다.
Erik Meijer 우리는 인터페이스를 대상으로 프로그래밍 한다. 우리는 어떤 것에 내용을 고려하지 않고 그것에 대해 프로그래밍 한다.
우리가 코드를 작성할 때 우리 코드가 협력하는 다른 코드가 있다. 이때 그 코드의 내용을 고려하지 않고 그 코드가 노출하고 있는 인터페이스만 고려하고 프로그래밍 한다는 것이다.
이런 방식은 특정 상황에서만 이용하는 것이 아니라 언제나 항상 사용하는 방식이다.