Skip to content

Latest commit

 

History

History
55 lines (27 loc) · 1.8 KB

File metadata and controls

55 lines (27 loc) · 1.8 KB

경계

시스템에 들어가는 모든 소프트웨어를 직접 개발하는 경우는 드물다

외부에서 작성한 코드를 우리 코드에 깔끔하게 통합하기 위한 경계를 처리하는 기법과 기교를 살펴본다

외부 코드 사용하기

외부 코드가 변할 가능성이 없다고 생각하지 마라

패키지 제공자나 프레임워크 제공자는 적용성을 넓히고 새로운 기능을 추가하는 등 더 많은 고객을 끌어들이기 위해 끊임없이 넓힌다.

외부코드가 변하게 되면 수정할 코드가 상당히 많아 진다

public class Sensors {
    private Map sensors = new HashMap();
 
    public Sensor getById(String id) {
        return (Sensor) sensors.get(id);
    }
 
    // ..
}

java.util.Map을 예로 들어보자

경계 인터페이스, 즉 외부코드인 Map을 Sensor라는 내부 클래스 안으로 숨기면 Map 인터페이스가 변하더라도 나머지 프로그램에는 영향을 미치지 않는다

앞서서 7장 "호출자를 고려해 예외 클래스를 정의하라"에서 봤듯이 외부 API를 감싸면 외부와의 의존성이 감소된다

경계를 살피고 익히기

외부 코드를 익히기는 어렵다.

외부 코드와 내부코드를 통합하기는 더 어렵다.

곧 바로 내부 코드에서 외부코드를 호출하는 대신 간단한 테스트 케이스 부터 시작해보자.

학습 테스트는 꽁짜 이상이다

패키지의 새버전이 나온다면 작성해놓은 학습 테스트를 수행해 차이점을 점검한다.

새버전이 우리와 호환되지 않는다면 학습테스트가 이 사실을 곧바로 밝혀낸다

학습 테스트는 외부 API를 터득하는 것 뿐 아니라 새로운 버전으로 마이그레이션할때 빛을 발한다