반응형
외부 소프트웨어와의 경계를 깔끔하게 처리하는 기법과 기교를 살펴보자.
- 다른 사내 팀이든, 구매한 프로그램이든, 오픈소스든
외부 코드 사용하기
- 인터페이스 제공자와 사용자 사이의 차이
- 제공자는 적용성을 넓히려 애쓴다.
- 사용자는 자신의 요구에 집중하는 인터페이스를 바란다.
- 인터페이스에 기능이 이것저것 많다면?
- 사용자에게 필요하지 않은 기능까지 제공하는 문제가 발생한다.
- 자료구조는 객체 안에 숨기고 인터페이스(함수)로 원하는 기능을 제공하자.
- 맵 쓸때 무조건 캡슐화 하라는 소리가 아니다.
- 맵을 여기저기 넘기지 말라는 말이다.
- 자료구조를 어디 밖으로 넘기고 주고받고 하지 말라
- Map 인스턴스를 공개 API의 인수로 넘기거나 반환값으로 사용하지 않는다.
- #TODO
- Map에 한정된 이야기인가?
- Map과 같은 경계 인터페이스 라고 언급했는데 경계 인터페이스는 무엇인가?
경계 살피고 익히기
- 외부 패키지 테스트가 우리 책임은 아니지만 우리 자신을 위해서 우리가 사용할 코드를 테스트하는 편이 바람직하다.
- 학습 테스트
- 곧바로 우리쪽 코드를 작성해 외부 코드를 호출하는 대신 먼저 간단한 테스트 케이스를 작성해 외부 코드를 익히면 어떨까?
- 학습 테스트는 프로그램에서 사용하려는 방식대로 외부 API를 호출한다.
- API를 사용하려는 목적에 초점을 맞춰서 작성
학습 테스트는 공짜 이상이다
- 학습은 어차피 해야되니 비용이 제로다.
- 패키지 버전 업그레이드 시에도 도움이 된다.
- 패키지가 예상대로 도는지 확인할 수 있다.
- 신규 직원이 와서 배우기도 더 좋다.
아직 존재하지 않는 코드를 사용하기
- 구현 안된 코드와 연계하는 부분을 처리하는 방법
- 외부 코드와 이어지는 부분에 인터페이스를 두고 해당 인터페이스를 호출
깨끗한 경계
- 경계에 위치하는 코드는 깔끔히 분리해야 한다.
- 외부 패키지를 호출하는 코드를 가능한 줄여 경계를 관리하자.
반응형
'스터디 > 클린코드 노마드 북클럽' 카테고리의 다른 글
북클럽 클린코드 10장. 클래스 (0) | 2024.07.09 |
---|---|
북클럽 클린코드 9장. 단위 테스트 (0) | 2024.07.06 |
북클럽 클린코드 7장. 오류 처리 (0) | 2024.07.03 |
북클럽 클린코드 6장. 객체와 자료 구조 (1) | 2024.07.01 |
북클럽 클린코드 5장. 형식 맞추기 (0) | 2024.06.29 |
댓글