Post

Chapter 08 - 경계

외부 코드(오픈 소스 등)를 우리 코드에 깔끔하게 통합해야 한다.

외부 코드 사용하기

  • 패키지 제공자나 프레임워크 제공자는 적용성을 최대한 넓히려 애쓴다.(그래야 많은 고객이 구매하니깐)
  • 하지만 사용자는 자신의 요구에 집중하는 인터페이스를 원한다.

  • 예시 : java.util.Map
    • 문제점1 : 해당 객체를 받으면 자유롭게 clear, add 등을 할 수 있다.(예상치 못한 결과)
    • 문제점2 : 저장 유형을 특정 객체로 제한하지 않는다. (not using generic)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    Map sensors = new HashMap();
    Sensor s = (Sensor)sensors.get(sensorId);
    
    // generic을 사용하면 코드 가독성이 크게 높아진다.
    Map<String, Sensor> sensors = new HashMap<Sensor>();
    Sensor s = sensors.get(sensorId);
    
    // 진짜 Best는 클래스로 따로 빼서 Map을 숨기는 것
    public class Sensors {
      private Map sensors = new HashMap();
      public Sensor getById(String id) {
        return (Sensor)sensors.get(id);
      }
    }
    
    • 문제점3 : Map 인터페이스가 변할 경우, 수정할 코드가 상당히 많아진다.
      • 실제로 자바 5때 generic를 지원하면서 인터페이스가 변경됐다.

경계 살피고 익히기

  • 외부 코드는 익히기 어렵고, 통합하기도 어렵다.
  • 학습 테스트 : 먼저 간단한 테스트 케이스를 작성해 외부 코드 익히기
This post is licensed under CC BY 4.0 by the author.