[8장] 경계

DAYEON·2021년 7월 24일
0

Clean Code

목록 보기
9/17
post-thumbnail

외부 코드 사용하기

👉 인터페이스 제공자는 적용성을 넓히기를, 인터페이스 사용자는 자신의 요구에 집중하길 원한다. 이로 인해 시스템 경계에서 문제가 생긴다.

  • 유용하면서도 위험한 경계 인터페이스, Map
    • Map이 반환하는 Object를 올바른 유형으로 변환할 책임은 Map을 사용하는 클라이언트에 있다.
    • 제네릭스를 사용해 코드 가독성을 높이자.
    • 제네릭스 사용 여부를 클래스 안에서 관리하자.
  • 정리! 경계 인터페이스를 사용할 땐
    • 경계 인터페이스를 이용하는 클래스나 클래스 계열 밖으로 노출되지 않도록 주의
    • 인스턴스를 공개 API의 인수로 넘기거나 반환값으로 사용하지 않도록 주의

경계 살피고 익히기

👉 외부에서 가져온 패키지를 사용하고 싶을 때, 테스트와 동시에 효율적으로 학습할 수 있는 방식, 학습 테스트

  • 학습 테스트
    • 간단한 테스트 케이스를 작성해 외부 코드를 익히는 방식
    • 프로그램에서 사용하려는 방식대로 외부 API를 호출하여 이해를 확인
    • API 사용 목적에 초점을 맞춤

log4j 익히기

👉 간단한 콘솔 로거 초기화 방법을 익히고 이것을 독자적인 로거 클래스로 캡슐화하자!

  • 로깅 기능을 직접 구현하는 대신 아파치 log4j 패키지를 사용하는 방법도 있다!
  • 정리가 잘 되어있어 첨부했다. https://cofs.tistory.com/354

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

👉 학습 테스트에 드는 비용은 없으며, 이해도를 높여주는 정확한 실험이다. 노력 < 성과

  • 학습 테스트는 새 버전마다의 코드 호환성을 테스트하는 등 많은 장점이 있다.
  • 학습 목적 외 테스트 케이스를 작성 목적으로도 아주 👍
  • 새 버전으로 이전하기도 쉬워지는 결과까지!

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

👉 경계의 또 다른 유형, 아는 코드모르는 코드를 분리하는 경계

  • 저자의 추천 방법
    • 모르는 영역에서 먼 부분부터 점차로 작업
    • 자체적인 인터페이스 정의
      → 인터페이스를 전적으로 통제 가능, 가독성↑, 코드의 의도 분명, 테스트 용이

깨끗한 경계

👉 소프트웨어 설계가 우수하다면 변경하는데 많은 투자와 재작업이 필요하지 않다! 깨끗한 경계를 위해서 해야할 일 정리!!

  • 통제하지 못하는 코드를 사용할 때는 너무 많은 투자, 많은 향후 변경 비용을 주의해야 한다.
  • 경계에 위치하는 코드는 깔끔히 분리한다.
  • 기대치를 정의하는 테스트 케이스를 작성한다.
  • 외부 패키지를 호출하는 코드를 줄여 경계를 관리해야 한다.

인상 깊었던...

때로는 (적어도 지금은) 알려고 해도 알 수가 없다. 때로는 더 이상 내다보지 않기로 결정한다.

경계 너머는 무지라는 안개와 구름으로 인해 한치 앞도 내다보기 어려웠지만, 점차로 우리에게 필요한 경계 인터페이스가 무엇인지 알게 되었다.


profile
노력하는 초보 개발자

0개의 댓글