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 |