[클린코드] 8. 경계

딱이·2022년 7월 5일
0

CleanCode 스터디

목록 보기
8/13

TIL (Today I Learned)

2022.05.13

오늘 읽은 범위

8장. 경계


책에서 기억하고 싶은 내용을 써보세요.

  • Map은 굉장히 다양한 인터페이스로 수많은 기능을 제공한다. (p.144)
    (..) Map 클래스를 사용할 때마다 위와 같이 캡슐화하라는 소리가 아니다. Map과 같은경계 인터페이스를 이용할 때는 이를 이용하는 클래스나 클래스 계열 밖으로 노출되지 않도록 주의한다.

  • 경계 살피고 익히기 (p.146)
    우리가 사용할 코드를 테스트하는 편이 바람직하다.

  • 학습테스트 (p.147)
    : 우리쪽 코드를 작성해 외부 코드를 호출하는 대신 먼저 간단한 테스트 케이스를 작성해 외부 코드를 익히는 방법. (외부코드;사용라이브러리 코드)

  • 학습 테스트는 패키지가 예상대로 도는지 검증한다. (..) 패키지가 우리 코드와 호환되리라는 보장은 없다. (..) 새 버전이 우리 코드와 호환되지 않으면 학습 테스트가 이 사실을 곧바로 밝혀낸다. (..) 실제 코드와 동일한 방식으로 인터페이스를 사용하는 테스트 케이스가 필요하다. (p.149-150)

  • 아직 존재하지 않는 코드를 사용하기 (p.150)
    : 아는 코드와 모르는 코드를 분리하는 경계다. (..) 저쪽 팀이 아직 API를 설계하지 않았으므로 구체적인 방법은 몰랐다. (aka.모르는 코드)

  • 깨끗한 경계 (p.152)
    경계에 위치하는 코드는 깔끔히 분리한다. 또한 기대치를 정의하는 테스트 케
    이스도 작성한다. 이쪽 코드에서 외부 패키지를 세세하게 알아야 할 필요가 없
    다. 통제가 불가능한 외부 패키지에 의존하는 대신 통제가 가능한 우리 코드에
    의존하는 편이 훨씬 좋다.


오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  • TC가 필요한 이유.. 라이브러리 사용에 대한 최소한의 보험.!
    (* 새 버전이 우리 코드와 호환되지 않으면 학습 테스트가 이 사실을 곧바로 밝혀낸다. .. 링크)
  • 아직 존재하지 않는 코드를 사용하기 (링크)
    : 아.. 너무 공감 된다. 오늘만 해도 구현되지 않은 API의 데이터구조를 상상하며 작업을 하였다. 프로젝트를 진행하다 보면, 여러사람들과 같이 일하게 되기에, 불가피하지만 충분히 일어날 수 있는 상황이다.
    저자가 인터페이스 구현에 있어 코드 가독성도 높아지고 코드 의도도 분명해진다고 말한건, 발상의 전환 그자체였다.. 뭐 그렇게 보면 장점도 있겠다 싶었다. 완전히 분리된 설계가 가능해 지니까.. 수정가능성도 여부에 두고 작업을 하게 되니 API 변경여부에 대해서도 유연하게 대응할 수 있겠다 생각했다.

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

학습테스트 (p.147)
: 우리쪽 코드를 작성해 외부 코드를 호출하는 대신 먼저 간단한 테스트 케이스를 작성해 외부 코드를 익히는 방법. (외부코드; 사용라이브러리 코드)

ADAPTER 패턴

  • 정의) 한 클래스의 인터페이스를 클라이언트에서 사용하고자하는 다른 인터페이스로 변환한다.
    어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다.
  • 클라이언트와 구현된 인터페이스를 분리시킬수 있으며, 향후 인터페이스가 바뀌더라도 그 변경 내역은 어댑터에 캡슐화 되기 때문에 클라이언트는 바뀔 필요가 없어진다.

    디자인패턴_어댑터 패턴(adapter pattern) 참고 블로그
profile
뚝딱뚝딱 FE

0개의 댓글