→ 개발 시 패키지, 오픈 소스, 다른 팀의 컴포넌트 등의 외부 코드를 이용할 때 소프트웨어 경계를 깔끔하게 처리하는 기법과 기교
인터페이스 제공자 vs 사용자
제공자 - 적용성 높이려 함.
사용자 - 자신의 요구에 집중하는 인테페이스 원함.
시스템 경계에서의 문제 예시 - java.utils.Map (p144~146)
→ 제네릭스 사용 시 가독성 ↑ but 여전히 필요하지 않은 기능 제공
∴ Map과 같은 경계 인터페이스 이용 시 이를 이용하는 클래스나 클래스 계열 밖으로 노출하지 않도록 주의.
(Map 인스턴스를 공개 API의 인수로 넘기거나 반환값으로 사용하지 않는다)
학습 테스트
: 우리 쪽 코드를 작성해 외부 코드를 호출하는 대신, 먼저 간단한 테스트 케이스를 작성해 외부 코드를 익히는 것
프로그램에서 사용하려는 방식대로 외부 API를 호출(통제된 환경에서 API를 제대로 이해하는지를 확인)
API를 사용하려는 목적에 초점
학습 테스트
이해도를 높혀주는 정확한 실험
패키지 새 버전이 나오면 학습 테스트를 이용하여 차이 확인
패키지가 예상대로 도는지 검증