8. 경계

8. 경계

Featured image

경계란 인터페이스 제공자와 사용자 사이에서 발생하는 입장 차이로 인해 문제가 발생할 수 있는 부분(경계)를 의미한다.

보통 경계 인터페이스로 Map, List 인터페이스를 예로 들 수 있다.

경계 살피고 익히기

학습 테스트를 통해 외부 API를 호출하고 제대로 동작하는지 테스트한다.

학습 테스트

학습 테스트는 패키지가 예상대로 도는지 검증한다. 우리가 짠 코드와 외부 패키지를 통합한 이후라도 패키지가 우리 코드와 완전히 호환되리라는 보장은 없다.
외부 패키지가 업데이트되고 기능이 추가되더라도 학습 테스트를 통해 우리 코드와 업데이트된 외부 패키지 코드가 제대로 호환되는지 확인해볼 수 있다.

깨끗한 경계

경계에 위치하는 코드는 깔끔히 분리한다(ex. 일급 컬렉션) 또한 기대값을 정의한 테스트 케이스를 작성한다.
우리 코드에서 외부 패키지를 세세하게 알 필요는 없다. 통제가 불가능한 외부 패키지에 의존하는 대신 통제가 가능한 우리 코드에 의존하는 편이 좋다.

새로운 클래스로 경계를 감싸거나(ex. 일급 컬렉션) adapter 패턴을 활용하여 외부 api 호출 로직을 인터페이스로 감싸고 구현부에 우리가 원하는 인터페이스를 패키지가 제공하는 인터페이스로 변환해볼 수도 있다.