[클린코드] 8장 경계

이준기·2022년 1월 26일
0

시스템에 들어가는 모든 소프트웨어를 직접 개발하는 경우는 드물다.

외부 코드를 우리 코드에 통합해야만 한다. 소프트웨어 경계를 깔끔히 처리해보자.

외부 코드 사용하기

  • Map과 같은 경계 인터페이스를 이용할 때는 이를 이용하는 클래스나 클래스 계열 밖으로 노출되지 않도록 주의한다.
// Map 인스턴스를 여기저기 넘기지 말자.
public class Sensors {
    private Map sensors = new HashMap();
    
    public Sensor getById(String id) {
        return (Sensor) sensors.get(id);
    }

경계 살피고 익히기

  • 바로 코드를 작성하는 대신, 먼저 간단한 테스트 케이스를 작성해 외부 코드를 익히자. 이것을 학습 테스트라 부른다.
  • 학습 테스트는 API를 사용하려는 목적에 초점을 맞춘다.

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

  • 패키지 새 버전이 나온다면 학습 테스트를 돌려 차이가 확인할 수 있다. 새 버전으로 이전하기 쉬워진다!

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

  • 우리가 바라는 인터페이스를 먼저 구현하면 우리가 인터페이스를 전적으로 통제한다는 장점이 생기며, 코드 가독성도 높아지고 코드 의도도 분명해진다.

깨끗한 경계

  • 경계에 위치하는 코드는 깔끔히 분리한다. 또한 기대치를 정의하는 테스트 케이스도 작성한다.
  • 통제가 불가능한 외부 패키지에 의존하는 대신 통제가 가능한 우리 코드에 의존하는 편이 훨씬 좋다.

Reference

클린 코드: 애자일 소프트웨어 장인 정신 - 로버트 마틴 지음

profile
Hongik CE

0개의 댓글