독서일지/클린 코드

클린 코드 독서일지 - Day 36

Sadie Kim 2023. 12. 12. 00:13

SerialDate 리팩터링

JCommon 라이브러리의 org.jfree.date 패키지 내에 있는 SerialDate 클래스를 탐험한다.
SerialDate : 날짜를 표현하는 자바 클래스. 시간대에 무관하게 날짜를 표현하기 위한 클래스다.

첫째, 돌려보자

테스트 케이스 점검

  • 기존 테스트 케이스가 모든 경우를 점검하지 않음.
    => 코드 커버리지 분석 도구인 클로버를 이용해 조사한 결과, 실행 가능한 문장 중 약 50%만 단위 테스트가 실행됨
    +테스트 케이스의 많은 코드가 주석으로 처리됨(실패한 테스트 케이스)
    => 독자적으로 단위 테스트 케이스 구현 -> 코드 커버리지 대략 92% 달성
    => 주석으로 뺀 코드 점검 => 통과해야 할 테스트들을 살리고, 테스트 케이스를 통과하도록 디버깅.

둘째, 고쳐보자

테스트 케이스를 실행해 가며 코드를 고쳐 보자.

  • 코드 변경 이력 없애기 - 소스 코드 제어 도구를 사용하므로 불필요
  • import문 줄이기
  • Javadoc 주석 전부를 <pre>로 감싸기 - 소스 코드에 보이는 형식을 Javadoc에 유지
  • 클래스 이름 변경 - SerialDate의 근원인 serial number(일련번호) 용어는 정확하지 못하고, 구현을 암시하지만 실상은 추상 클래스임 => DayDate로 변경
  • MonthConstants를 enum으로 정의하도록 수정 - MonthConstants 클래스는 static final 상수 모음에 불과하기 때문
  • 직렬화 선언을 자동 제어하도록 serialVersionUID 변수 제거
  • 불필요한 주석 제거
  • 일부 클래스만 사용하는 변수 옮김