[CleanCode] Chapter08 경계

728x90

📖 책 내용 정리

🔶 8장 경계

1️⃣ 외부 코드 사용하기

  • 프레임워크 제공자는 적용성을 최대한 넓히려고하고 사용자는 자신의 요구에 집중하는 인터페이스를 바라기 때문에 시스템 경계에서 문제가 생길 소지가 많다.
  • 예를들어 Map의 경우 기능성과 유연성은 유용하지만 위험이 크다
    → map을 만들어 넘기는 경우, 넘기는 쪽에서 Map을 삭제할 수 있다.
    → 사용자가 마음대로 어떤 객체 유형이든 추가 할 수 있다.
    (코드는 동작하지만 코드가 깨끗하지 않음)
    → 사용자에게 필요하지 않은 기능까지 제공한다.
    → map 인터페이스가 변할 경우 수정할 코드가 많이 생긴다.
  • Map과 같은 경계 인터페이스를 이용할 때에는 이를 이용하는 클래스나 계열 밖으로 노출되지 않도록 주의해야한다.

 

2️⃣ 경계 살피고 익히기

  • 외부코드는 익히기 어렵고 통합하기도 어렵다.
  • 학습테스트 : 우리쪽 코드를 작성해 외부 코드를 호출하는 대신 간단한 테스트 케이스를 작성해 외부코드를 익히는 것

 

3️⃣ log4j 익히기

  • 콘솔 로거 초기화 하고 독자적인 로거 클래스로 캡슐화하면 나머지 프로그램은 log4j 경계 인터페이스를 몰라도된다.

private Logger logger;

@Before
public void initialize(){
    logger = Logger.getLogger("logger");
    logger.removeAllAppenders();
    logger.getRootLogger().removeAllAppenders();
}

 

4️⃣ 학습 테스트는 공짜 이상이다

  • 학습 테스트는 이해도를 높여주고 패키지가 예상대로 도는지 검증한다.

 

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

  • 우리가 바라는 인터페이스를 구현하면 우리가 인터페이스를 전적으로 통제한다는 장점이 생기고 코드 가독성을 높여주며 코드의 의도도 분명해진다.

 

6️⃣ 깨끗한 경계

  • 경계에 위치하는 코드는 깔끔하게 분리한다.
  • 외부 패키지를 호출하는 코드를 줄여 경계를 관리한다.
    (새로운 클래스로 경계를 감싸거나 ADAPTER 패턴을 사용하여 원하는 인터페이스를 패키지가 제공하는 인터페이스로 변환)

 

💌 책에서 기억하고 싶은 내용

우리가 바라는 인터페이스를 구현하면 우리가 인터페이스를 전적으로 통제한다는 장점이 생기고 코드 가독성을 높여주며 코드의 의도도 분명해진다.

 

💬 소감

Map을 처음 경험 했을 때에는 신세계였다. 그래서 아무 생각없이 썼던것도 사실이다.
편한만큼 리스크가 있다는 생각을 하지 못했는데. 이 책을 읽으면서 Map에 대해 다시 생각하게 되었다.
사실 나머지 내용은 실전에서 느껴보지 못해서 아쉽게도 크게 기억에 남지않았다.
외부 코드를 사용할 때 학습 테스트를 하면 좋다고하는데, 사실 시간에 쫓겨 그럴 시간도 없었을 뿐더러 학습 테스트라는 것을 처음 알게됐다.
이후 시간이 된다면 학습 테스트와 log4j에 대해서 한번 더 알아볼 예정이다.

 

💥 이해 안 가는 부분

  • log4j는 사실 읽으면서 뭐하는건지 하나도 이해를 하지 못했다..
728x90

'스터디 > CleanCode' 카테고리의 다른 글

[CleanCode] Chapter07 오류처리  (1) 2023.12.11
[CleanCode] Chapter06 객체와 자료구조  (0) 2023.12.02
[CleanCode] Chapter05 형식 맞추기  (0) 2023.11.30
[CleanCode] Chapter04 주석  (0) 2023.11.07
[CleanCode] Chapter03 함수  (0) 2023.11.03