경계 : 외부 코드를 내 코드에서 호출하는 부분

Untitled

  1. 외부 코드 사용하기

    1. 인터페이스 제공자 : 적용성을 넓혀야지!

    2. 인터페이스 사용자 : 내가 하고 싶은 거에 집중할 수 있는 인터페이스를 원해!

    3. 인터페이스 사용자는 경계 인터페이스를 여기저기 노출되지 않게 하는 게 좋다

      1. Map 제공자 :
        1. clear() 등의 다양한 기능 제공
        2. 타입 제한하지 않음
        3. 인터페이스를 좀 더 업글해야지 (제너릭)
      2. Map 사용자 :
        1. clear()로 데이터 삭제
        2. 제너릭을 써서 제한
        3. 인터페이스 변할 경우 전체 코드 수정 불가피
        4. 아예 클래스로 감싸 형변환
      public Sensors {
          private Map<String, Sensor> sensors = new HashMap<>();
          
          public Sensor getById(String id) {
              return sensors.get(id);
          }
          
          // 이하 생략
      }
      
  2. 경계 살피고 익히기

    1. 외부 패키지를 가져올 때 하면 좋은 일
      1. 문서를 읽고 사용법을 결정한다.
      2. 우리쪽 코드를 작성해 라이브러리가 예상대로 동작하는지 본다.
    2. 학습 테스트 (짐 뉴커크) : 간단한 테스트를 먼저 작성하는 것
  3. log4j 익히기

    1. 아파치의 log4j 패키지를 내려받고 소개 페이지를 열자.
    2. 테스트 케이스를 작성한다.
  4. 학습 테스트는 공짜 이상이다

    1. 패키지 버전 업이 이루어질 때 테스트가 이를 알려준다.
  5. 아직 존재하지 않는 코드를 사용하기

    1. 아직 존재하지 않는 코드와 먼 곳부터 개발
    2. 아직 존재하지 않는 부분과의 경계는 인터페이스를 만들고, Fake 구현체를 만들어 테스트

    Untitled

  6. 깨끗한 경계

    1. 변경 : 설계가 우수하면 많은 투자, 재작업이 필요X

    2. 경계에 위치하는 코드는 깔끔하게 분리하자.

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

      1. 새로운 클래스로 경계를 감싸거나
      2. ADAPTER 패턴을 써보자.

      Untitled