08. 경계
외부 코드를 우리 코드로 깔끔하게 처리하는 기법을 살펴 본다
#
외부 코드 사용하기- 외부 패키지는 범용성을 많이 생각하기 때문에 필요하지 않은 기능까지 있을 수 있다
- 그래서 이를 Wrapper 클래스로 일부 필요하지 않는 기능을 제외할 수 있다
- 항상 외부 API, 인터페이스에 대해 추상화 하라는건 아니고,
- 리턴값이나 인수로 사용하면 의도치 않은 기능을 외부에서 많이 사용할 수 있으니 주의
#
경계를 살피고 익히기학습테스트
를 활용해 프로그램에서 의도한 방식으로 외부 API를 다뤄보며 학습할 수 있음- 외부 코드도 익히면서 프로그램에서 의도한 방식으로 통합 테스트까지 학습테스트로 할 수 있음
- 학습 테스트가 아니더라도, 프로그램에서 의도한 방식으로 외부 인터페이스를 사용하는 테스트 케이스가 필요
- 이런 경계 테스트는 패키지의 새 버전으로 이전하기 쉬워짐
#
아직 존재하지 않는 코드 사용- 존재하지 않는 코드에 대해 정의가 명확해지면 interface를 명세화한 다음
- Fake 클래스를 구현해서 진행한다
- 이후 외부 API 가 존재하게 되면 Adapter 패턴을 활용해 인터페이스를 구현한다
#
깨끗한 경계- 경계에 위치한 코드는, Wrapper 클래스나 Adapter 패턴을 이용해 분리하자
- 해당 경계에 대한 프로그램 의도를 정의하는 테스트케이스도 작성
- 외부 패키지를 호출하는 코드도 가능하면 줄여 경계를 관리하기 편하도록 하자