본문 바로가기
스터디/클린코드 노마드 북클럽

북클럽 클린코드 8장. 경계

by 1005ptr 2024. 7. 6.
반응형

외부 소프트웨어와의 경계를 깔끔하게 처리하는 기법과 기교를 살펴보자.

  • 다른 사내 팀이든, 구매한 프로그램이든, 오픈소스든

외부 코드 사용하기

  • 인터페이스 제공자와 사용자 사이의 차이
    • 제공자는 적용성을 넓히려 애쓴다.
    • 사용자는 자신의 요구에 집중하는 인터페이스를 바란다.
  • 인터페이스에 기능이 이것저것 많다면?
    • 사용자에게 필요하지 않은 기능까지 제공하는 문제가 발생한다.
  • 자료구조는 객체 안에 숨기고 인터페이스(함수)로 원하는 기능을 제공하자.
    • 맵 쓸때 무조건 캡슐화 하라는 소리가 아니다.
    • 맵을 여기저기 넘기지 말라는 말이다.
    • 자료구조를 어디 밖으로 넘기고 주고받고 하지 말라
    • Map 인스턴스를 공개 API의 인수로 넘기거나 반환값으로 사용하지 않는다.
    • #TODO
      • Map에 한정된 이야기인가?
      • Map과 같은 경계 인터페이스 라고 언급했는데 경계 인터페이스는 무엇인가?

경계 살피고 익히기

  • 외부 패키지 테스트가 우리 책임은 아니지만 우리 자신을 위해서 우리가 사용할 코드를 테스트하는 편이 바람직하다.
  • 학습 테스트
    • 곧바로 우리쪽 코드를 작성해 외부 코드를 호출하는 대신 먼저 간단한 테스트 케이스를 작성해 외부 코드를 익히면 어떨까?
    • 학습 테스트는 프로그램에서 사용하려는 방식대로 외부 API를 호출한다.
    • API를 사용하려는 목적에 초점을 맞춰서 작성

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

  • 학습은 어차피 해야되니 비용이 제로다.
  • 패키지 버전 업그레이드 시에도 도움이 된다.
  • 패키지가 예상대로 도는지 확인할 수 있다.
  • 신규 직원이 와서 배우기도 더 좋다.

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

  • 구현 안된 코드와 연계하는 부분을 처리하는 방법
  • 외부 코드와 이어지는 부분에 인터페이스를 두고 해당 인터페이스를 호출

깨끗한 경계

  • 경계에 위치하는 코드는 깔끔히 분리해야 한다.
  • 외부 패키지를 호출하는 코드를 가능한 줄여 경계를 관리하자.
반응형

댓글