14. 라이브러리 통해 코드 분석하기
in 클린코드 on Clean-code
라이브러리 분석을 통해 코드를 바라보는 시각 기르기
1. 책 내용 요약
JUnit 들여다보기
세상에 완벽한 코드는 없다
- 의도를 명확하게 표현하기 위해 조건문을 메서드로 분리
- 전후 단계가 있는 변수들 사이 시간적인 결합(hidden temporal coupling)을 해결하기 위해 리팩터링
- 더 적절한 의미로 네이밍 변경
- 불필요한 연산을 하는 코드 제거
SerialDate 리팩터링
남의 코드를 비판하고, 내 코드의 비판을 듣는 건 편안하게 여겨야 할 활동이다.
Make it Work
- 테스트 코드가 모든 경우를 테스트하지 않는다.
- 주석 처리된 테스트 코드들을 모두 동작하도록 손본다.
- 코드의 구조를 개선하기 전에 버그들을 수정한다. (경계 조건 오류, 늘 거짓인 조건문)
Make it Right
- 옛날 스타일 코드 제거(MonthConstants를 상속하는 방식 > enum Month)
- serialVersionUID를 컴파일러가 자동 생성하도록 함 (직접 변경하지 않아 생기는 버그보다 변경된 UID로 발생한 예외를 디버깅하는게 낫다.)
- DayDate(SerialDate) Abstarct Factory를 통해 생성하도록 한다.
- 캡슐화를 위해 접근제한자를 수정(public > private)
- 사용되지 않는 변수 제거
- 불필요한 주석 제거
2. 오픈 소스 접근법
오픈소스 코드 분석 어떻게 하나-김형준 프로그램을 망치는 가장 좋은 방법 중 하나는 개선이라는 이름 아래 구조를 크게 뒤집는 행위다.
- 해당 솔루션에 대한 기본 지식을 먼저 익혀라
- 본인 PC에 빌드 및 실행 환경을 구축하라
- 수정, 실행, 확인 사이클을 짧게 만들어라
- 자신에게 질문을 많이 하라
- 분석하면서 문서로 정리하라
- 디버거 활용하기
- 코드의 일부를 통해 먼저 파악하기
3. Spring 프로젝트 접근법
- repository 이름과 README.md를 보고 프로젝트의 성격을 파악한다.
- 패키지 구조를 살펴본다 - 멀티 모듈 프로젝트?
- 빌드 설정 파일(build.gradle)을 보고, 어떤 디펜던시(모듈)을 쓰나 살펴본다.
- config 패키지 하위에 어떤 설정들이 되어있나 본다. (RedisConfig, KafkaProducerConfig, DataSourceConfing, CircuitBreakerConfig, ChcheConfig…)
- controller 패키지 하위 코드를 보고 어떤 요청들을 처리하는지 감을 잡는다.
- service 패키지 하위를 보고 비지니스 로직을 추축한다.
- 데이터 구조를 알기 위해 resource 하위의 db 설정 파일을 보고 db에 접근해본다. schema.sql 파일이 있으면 DDL을 읽어본다.
- 세부적인 비지니스 로직을 확인할 때는 test 코드와 비교하며 이해한다.