시스템에 들어가는 모든 소프트웨어를 직접 개발하는 경우는 드물다. 때로는 패키지를 사고, 떄로는 오픈 소스를 이용한다. 때로는 사내 다른 팀이 제공하는 컴포넌트를 사용한다. 어떤 식으로든 외부 코드를 우리 코드에 깔끔하게 통합해야한다. 이때 소프트웨어 경계를 깔끔하게 처리하는 기법과 기교가 있어야한다.
[ 경계 살피고 익히기 ]
외부 코드를 사용하면 적은 시간에 더 많은 기능을 출시하기 쉬워진다. 하지만 외부 코드를 익히기는 어렵다. 외부 코드를 통합하기도 어렵다. 두 가지를 동시에 하기는 더 어렵다. 다르게 접근하여 곧바로 우리쪽 코드를 작성해 외부 코드를 호출하는 대신 먼저 간단한 테스트 케이스를 작성해 외부 코드를 익히면 어떨까?
짐 뉴커크(Jim Newkirk)는 이를 학습 테스트 라 부른다. 학습 테스트는 프로그램에서 사용하려면 방식대로 외부 API를 호출한다. 통제된 환경에서 API를 제대로 이해하는지를 확인하는 셈이다. 학습 테스트는 API를 사용하려는 목적에 초점을 맞춘다.
[ 깨끗한 경계 ]
소프트웨어 설계가 우수하다면 변경하는데 많은 투자와 재작업이 필요하지 않다. 엄청난 시간과 노력과 재작업을 요구하지 않는다. 통제하지 못하는 코드를 사용할 때는 너무 많은 투자를 하거나 향후 변경 비용이 지나치게 커지지 않도록 각별히 주의해야 한다.
이쪽 코드에서 외부 패키지를 세세하게 알아야 할 필요가 없다. 통제가 불가능한 외부 패키지에 의존하는 대신 통제가 간으한 우리 코드에 의존하는 편이 훨씬 좋다. 자치샇면 오히려 외부 코드에 휘둘리고 만다.
외부 패키지를 호출하는 코드를 가능한 줄여 경계를 관리하자. Map에서 봤듯이, 새로운 클래스로 경계를 감싸거나 아니면 ADAPTER 패턴을 사용해 우리가 원하는 인터페이스를 패키지가 제공하는 인터페이스로 변환하자.
'Reading Book > Clean Code' 카테고리의 다른 글
[Clean Code]클린코드_10_클래스 (0) | 2021.08.17 |
---|---|
[Clean Code]클린코드_9_단위 테스트 (0) | 2021.08.17 |
[Clean Code]클린코드_7_오류 처리 (0) | 2021.08.17 |
[Clean Code]클린코드_6_객체와 자료 구조 (0) | 2021.08.17 |
[Clean Code]클린코드_5_형식 맞추기 (0) | 2021.08.17 |