Boundaries
외부 코드를 우리 코드에 깔끔하게 통합하는 방법을 정리한다.
외부 코드 사용
java.util.Map 은 아래처럼, 다양한 인터페이스를 제공한다.
https://docs.oracle.com/javase/8/docs/api/java/util/Map.html
Map 이 제공하는 기능성과 유연성은 유용하지만, 위험도 크다.
Map 을 만들어서 여기저기 넘긴다고 하자.
넘기는 쪽에서는 Map 내용을 삭제하지 않는다고 생각할 수 있다.
하지만, Map 사용자라면 clear() 로 내용을 지울 권한이 있다.
또한, Map 은 객체 유형을 제한하지 않기 때문에, 누구나 어떤 객체 유형도 추가할 수 있다.
이런 위험을 개선하는 코드를 보자.
1 | public class Sensors { |
경계 인터페이스인 Map 을 Sensors 안으로 숨겼다.
그래서, Map 인터페이스가 변해도 프로그램에 영향을 미치지 않는다.
그리고, Sensors 클래스는 필요한 인터페이스만 제공해서 코드를 이해하기 쉽고 오용하기 어렵다.
Sensors 클래스는 설계 규칙과 비즈니스 규칙을 따르도록 강제할 수 있다.
경계 살피고 익히기
외부에서 가져온 패키지를 사용하고 싶으면 학습 테스트부터 시작하자.
우리 코드를 작성해 외부 코드를 호출하는 대신, 먼저 간단한 테스트 케이스를 작성해 외부 코드를 익히자.
학습 테스트는, API 를 사용하려는 목적에 초점을 맞춘다.