SerialDate 리팩터링(3)
책너두 5기 39일차 로버트 C. 마틴의 클린코드 p. 363~ p.369 내용정리 16. SerialDate 리팩터링 리팩터링 과정 처음에 나오는 주석을 간단하게 고치고 개선한다. enum을 모두 독자적인 소스 파일로 옮긴다. 정적 변수(dataFormateSymbols)와 정적 메서드(getMonthNames, isLeapYear, lastDayOfMonth)를 DateUtil이라는 새 클래스로 옮긴다. 일부 추상 메서드를 DayDate 클래스로 끌어 올린다. month.make를 Month.fromInt로 변경했다. 다른 enum도 똑같이 변경한다. 모든 enum에 toInt() 접근자를 생성하고 index 필드를 private로 정의한다. plusYears와 plusMonths에 있는 중복을 LastDayOfMonth라는 새 메서드를 생성하여 없앴다. 자주 사용되는 숫자 1을 없앴다. 결론 위와 같은 과정을 통해 버그를 고쳤고, 테스트 커버리지가 증가했으며 코드 크기도 줄고 명확해졌다. 다른 사람은 더욱 쉽게 이해할 수 있다. ...