FireDrago

[Clean Code] 8장 - 경계 본문

[Clean Code] 8장 - 경계

화이용 2023. 9. 30. 12:32

외부코드 사용하기

  • Map과 같은 경계인터페이스를 인수로 넘기거나 반환값으로 사용하지 않는다.
  • 대신 클래스로 감싼다. 필요한 인터페이스만을 제공하고, 변화의 영향을 최소화 시킨다.
public class Sensors {
    // 경계의 인터페이스(이 경우에는 Map의 메서드)는 숨겨진다.
    // Map의 인터페이스가 변경되더라도 여파를 최소화할 수 있다. 예를 들어 Generic을 사용하던 직접 캐스팅하던 그건 구현 디테일이며 Sensor클래스를 사용하는 측에서는 신경쓸 필요가 없다.
    // 이는 또한 사용자의 목적에 딱 맞게 디자인되어 있으므로 이해하기 쉽고 잘못 사용하기 어렵게 된다.
    private Map sensors = new HashMap();
    
    public Sensor getById(String id) {
        return (Sensor)sensors.get(id);
    }
    //snip
}

경계 살피고 익히기

  • 외부코드를 익히고 우리시스템에 통합시키기 위해서 학습테스를 한다.
  • 통제된 환경에서 API를 제대로 이해했는지 확인 할 수 있다.

 

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

  • 기존 시스템과 잘 통합 된 API 라도 새 버전이 나온경우 테스트를 다시 한다.
  • 기존 시스템과의 호환성, 변경사항 이해가 빨라진다.

 

존재하지 않는 코드를 사용하기

  • 모르는 코드를 사용해야 할때 자체 인터페이스를 만든다.
  • ADAPTER 패턴을 사용한다. (추가적인 이해가 필요하다)

 

깨끗한 경계

  • 경계에서 변화를 최소화 해야한다.
  • 테스트 케이스를 항상 작성하라
  • 경계는 감싸거나, adapter 패턴을 사용하라