16장 SerialDate 리팩터링(344~351)
<aside> 💡 SerialDate를 리팩토링 해보자
</aside>
SerialDate는 날짜를 표시하는 자바 클래스
자바는 이미 java.utilDate 등과 같은 클래스를 제공한다
그럼에도 SerialDate를 만든 이유는 시간 기반 날짜 클래스보다 순수 날짜 클래스가 필요하기 때문
첫째, 돌려보자
SerialDateTests라는 클래스는 단위 테스트 케이스 몇 개를 포함하지만 모든 경우를 점검하지 않는다
(코드 커버리지 분석 도구) 클로버를 이용해보니 단위 테스트가 실행하는 코드와 실행하지 않는 코드는 50%에 불과하다
단위 테스트가 실행하지 않는 코드가 여기저기 흩어져 있다
stringToWeekDayCode라는 메서드가 만들어진 이유가 불명확하다. 또한 만들었다면 대소문자 구분 없이 모두 통과해야한다
전형적인 경계 조건 오류 : 2004년 12월 25일은 토요일이고 다음 토요일은 2005년 1월 1일이다. 하지만 테스트를 돌리면 getFollowingdayOfWeek 메서드가 12월 25일을 다음 토요일로 반환한다.
틀린 알고리즘 :결코 실행되지 않는 코드가 존재한다. if 문이 항상 거짓이기 때문에 실행되지 않는 코드가 존재한다.
둘째, 고쳐보자
코드를 고칠 때마다 JCommon 단위 테스트와 본인이 짠 단위 테스트를 실행하자
코드 변경 이력은 1960년대에 나온 방식이다