TDD 입문하기 - 테스트 주도 개발의 깊은곳: 인터페이스와 구현
인터페이스와 구현
인터페이스와 구현은 코드를 구성하는 중요한 요소다.
두 요소의 역할을 떠올리고 설계 접근법을 소개
실무에서 TDD 와 자주 쓰일수 있는 기법, 기술, 도구 소개
추상화
- 주어진 맥락에 관련된 정보들을 남기고 동시에 주어진 맥락과 관련없는 정보를 잊어버리는 과정
- 목적에 따라 대상이 가진 특징의 일부만 투영하는 것
- 추상화 과정을 통해서 투영된 결과로 모델을 얻는다.
협력과 계약
- 대부분의 코드는 다른 코드와 협력
- 협력에 필요한 것은 ‘어떻게’가 아닌 ‘무엇’
인터페이스
- ‘무엇’을 표현
- 클라이언트 코드에게 반드시 필요한 정보
- 협력하는 코드 사이의 계약
- 추상화 결과
인터페이스에 프로그래밍
- 우리는 인터페이스를 대상으로 프로그래밍을 한다.
- 어떤것에 내용을 고려하지 않고 그것에 대해 프로그래밍을 한다.
구현
- 구현에 따라 다르게 작동
- 다른 구현을 제공
정보숨김
효과적인 모듈화
- 조직 간 의사소통 최소화
- 변경 여파 최소화
- 시스템 이해 도움
공개된 설계 결정과 숨겨진 설계 결정
- 어려운 설계 결정과 변경될 것 같은 설계 결정을 숨겨라.
- 대부분의 시스템 정보는 대부분의 프로그래머에게 숨겨지는 것이 도움이 된다.
- 대신 어려운 설계 결정이나 변경 될 가능성이 있는 설계 결정은 목록으로 시작하는 것이 좋다. 그런 다음 각 모듈은 이러한 결정을 다른 모듈로부터 숨기도록 설계된다.