학습 테스트
외부 코드(오픈소스, 라이브러리)를 익히기는 어렵다. 외부 코드를 통합하기도 어렵다.
해결 방법으로 우리 쪽 코드를 작성해 외부 코드를 호출하는 대신 먼저 간단한 테스트 케이스를 작성해 외부 코드를 익히는 방법이 있다.
이 방법을 학습 테스트라 부른다.
학습 테스트는 패키지가 예상대로 도는지 검증한다. 일단 통합한 이후라고 하더라도 패키지가 우리 코드와 호환되리라는 보장은 없다. 패키지 새 버전이 나올 때마다 새로운 위험이 생긴다.
새 버전이 우리 코드와 호환되지 않으면 학습 테스트가 이 사실을 곧바로 밝혀낸다.
학습 테스트를 이용한 학습이 필요하든 그렇지 않든, 실제 코드와 동일한 방식으로 인터페이스를 사용하는 테스트 케이스가 필요하다.
이런 경계 테스트가 있다면 패키지의 새 버전으로 이전하기 쉬워진다.
깨끗한 경계
경계에 위치하는 코드는 깔끔히 분리한다. 또한 기대치를 정의하는 테스트 케이스도 작성한다. 이쪽 코드에서 외부 패키지를 세세하게 알아야 할 필요가 없다. 통제가 불가능한 외부 패키지에 의존하는 대신 통제가 가능한 우리 코드에 의존하는 편이 훨씬 좋다.
외부 패키지를 호출하는 코드를 가능한 줄여 경계를 관리하자. 새로운 클래스로 경계를 감싸거나, 우리가 원하는 인터페이스를 패키지가 제공하는 인터페이스로 변환하자. 어느 방법이든 코드 가독성이 높아지며, 경계 인터페이스를 사용하는 일관성도 높아지며, 외부 패키지가 변했을 때 변경할 코드도 줄어든다.
'독서록 > Clean Code' 카테고리의 다른 글
[Clean Code] 10장 클래스 (0) | 2022.04.26 |
---|---|
[Clean Code] 9장 단위 테스트 (0) | 2022.04.25 |
[Clean Code] 7장 오류 처리 (0) | 2022.04.20 |
[Clean Code] 6장 객체와 자료 구조 (0) | 2022.04.20 |
[Clean Code] 5장 형식 맞추기 (0) | 2022.04.19 |