코딩하는 털보

클린 코드, 8. 경계 본문

Book/클린 코드

클린 코드, 8. 경계

이정인 2021. 8. 25. 13:29

클린 코드, 8. 경계

소프트웨어 경계(제공자가 제공하고 사용자는 사용하는 인터페이스)를 깔끔하게 처리하는 기법과 기교.

  • 외부 코드 사용하기
    Map과 같은 경계 인터페이스를 이용할 때는 이를 이용하는 클래스나 클래스 계열 밖으로 노출되지 않도록 주의한다. (Map 객체를 가지고 있는 새로운 클래스를 만들어서 대신 사용하기) Map 인스턴스를 공개 API의 인수로 넘기거나 반환값으로 사용하지 않는다.
  • 경계 살피고 익히기
    외부 코드를 익히고 우리의 프로그램과 통합하는 것은 어렵다. '학습테스트'는 곧바로 우리쪽 코드를 작성해 외부 코드를 호출하는 뻔한 방식 대신 먼저 간단한 테스트 케이스를 작성해 외부 코드를 익힌다.
  • 학습 테스트는 공짜 이상이다
    학습 테스트는 드는 비용 없이 필요한 지식만 확보하는 손쉬운 방법이다.
    학습 테스트는 공짜 이상이다. 투자하는 노력보다 얻는 성과가 더 크다. 새로운 버전이 우리 코드와 호완되지 않으면 학습 테스트가 이 사실을 곧바로 밝혀낸다.
  • 아직 존재하지 않는 코드를 사용하기
    아직 정의되지 않은 API를 실제로 사용할 우리의 코드와 분리한다. 우리에게 필요한 인터페이스를 만들어두었다가 나중에 외부 API가 정의되면 그 때 ADAPTER 패턴으로 API 사용을 캡슐화하면서 인터페이스를 구현한 Adapter를 만든다.
  • 깨끗한 경계
    외부 패키지가 변했을 때 경계 변경 비용이 지나치게 커지지 않도록 각별히 주의해야 한다.
    경계에 위치하는 코드는 깔끔히 분리한다. 또한 기대치를 정의하는 테스트 케이스도 작성한다. 통제가 불가능한 외부 패키지에 의존하는 대신 통제가 가능한 우리 코드에 의존하는 편이 훨씬 좋다.
    외부 패키지를 호출하는 코드를 가능한 줄여 경계를 관리하자. 새로운 클래스로 경계를 감싸거나 ADAPTER 패턴을 사용해 우리가 원하는 인터페이스를 패키지가 제공하는 인터페이스로 변환하자.
Comments