Book/클린코드
[클린코드] 16장 SerialDate 리팩토링
yo0oni
2023. 9. 21. 07:22
첫째, 돌려보자
- 테스트 케이스를 훑어보면 모든 경우를 점검하지 않는다는 것을 알 수 있다.
- 코드 커버리지 분석 도구를 이용하여 단위 테스트가 실행하는 코드와 실행하지 않는 코드를 조사한다.
- 클래스를 철저히 이해하고 리팩터링하려면 훨씬 높은 테스트 커버리지가 필요하다. (현재는 50%)
둘째, 고쳐보자
1. 필요없는 주석은 제거
변경 이력은 1960년대에 나온 방식이므로 제거한다.
현재는 소스 코드 제어 도구를 사용한다.
2. Javadoc 주석
한 소스코드에 여러 언어를 사용하는 것은 좋지 않다. 주석 전부를 <pre>로 감싼다.
3. 상수 모음 클래스는 enum으로 관리
MonthConstatns 클래스는 달을 정의하는 static final 모음에 불과하므로 enum으로 정의한다.
그 외의 상수 모음으로 쓰이는 클래스는 enum으로 재정의한다.
4. 올바른 위치에 변수 선언
ACCREGATE_DAYS_TO_END_OF_PRECEDING_MONTH는 SpreadwsheetDate에서만 사용한다.
특정 구현에 의존하지 않는 변수는 사용되는 위치에 가깝게 옮긴다.
5. 접근 제한자
public일 필요가 없다면 private으로 변경한다.