티스토리 뷰

반응형


| 8. 경계



- 소프트웨어 경계를 깔끔하게 처리하는 기법과 기교



|| 외부 코드 사용하기


- 외부 코드(인터페이스)가 변할 가능성이 거의 없다고 여길 수 없다.

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

  (자바 5가 제네릭스를 지원하면서 Map 인터페이스가 변했다고 한다..)

- java.util.Map 을 예로 보자.

  경계 인터페이스인 Map을 class 안으로 숨기면,

  Map 인터페이스가 변하더라도 나머지 프로그램에는 영향을 미치지 않는다.

  Class 안에서 객체 유형을 관리하고 변환해주자.

1
2
3
4
5
6
7
8
9
public class Sensors {
    private Map sensors = new HashMap();
 
    public Sensor getById(String id) {
        return (Sensor) sensors.get(id);
    }
 
    // ..
}
cs


* Map과 같은 경계 인터페이스를 이용할 때는 이를 이용하는 클래스나 클래스 계열 밖으로 노출되지 않도록 주의하자.



|| 경계 살피고 익히기


- 우리 자신을 위해 우리가 사용할 코드를 테스트해보자.

- 간단한 테스트 케이스를 작성해 외부 코드를 익혀보자.


"학습 테스트" : 프로그램에서 사용하려는 방식대로 외부 API를 호출. API를 사용하려는 목적에 초점

- log4j 와 같은 패키지를 이용해보자.

- 실제 코드와 동일한 방식으로 인터페이스를 사용하는 테스트 케이스가 필요

- 경계 테스트가 있다면 패키지의 새 버전으로 이전하기 쉬워짐



|| 깨끗한 경계


- 경계에 위치하는 코드는 깔끔히 분리

- 외부 패키지를 호출하는 코드를 가능한 줄여 경계를 관리

- 새로운 Class로 경계를 감싸거나, 

  ADAPTER 패턴을 사용해 우리가 원하는 Interface를 패키지가 제공하는 Interface로 변환하자.



출처 클린 코드 (Robert C. Martin)





반응형
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday