16장 SerialDate 리팩터링(352~361)
불필요한 배열
AGGREGATE_DAYS_TO_END_OF_MONTH
- 위 배열은 JCommon 프레임워크 어디서도 사용하지 않는다.
- 불필요한 변수를 제거한다
특정 구간에서만 사용되는 배열
AGGREGATE_DAYS_TO_END_OF_PRECEDING_MONTH
- 위 배열은 SpreadsheetDate에서만 사용한다.
- 변수를 SpreadsheetDate로 옮겨야할까 싶으나 특정 구현에 의존하진 않는다.
- 그렇다면 SpreadsheetDate외에 다른 구현이 없으므로 변수가 사용되는 위치에 가깝게 옮긴다
모호한 표현의 상수
INCLUDE_NONE,
INCLUDE_FIRST,
INCLUDE_SECOND,
INCLUDE_BOTH
- 위 상수는 범위 끝 날짜를 범위에 포함할지 여부를 결정한다
- 수학적으로 ‘개구간’, ‘반개구간’, ‘폐구간’이라는 개념이다
- enum 이름을 DateInterval로 결정하고 각 값을 CLOSED, CLOSED_LEFT, CLOSED_RIGHT, OPEN으로 정의
for 루프 안에 if 문 두 번 등장