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으로 변경한다.