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을 없앴다.

결론

위와 같은 과정을 통해 버그를 고쳤고, 테스트 커버리지가 증가했으며 코드 크기도 줄고 명확해졌다. 다른 사람은 더욱 쉽게 이해할 수 있다.

17. 냄새와 휴리스틱

주석

부적절한 정보

다른 시스템에 저장할 정보는 주석으로 적절하지 못한다. 작성자, 최종 수정일, SPR(Sofrtware Problem Report) 번호 등과 같은 메타 정보만 넣는다.

쓸모 없는 주석

오래된 주석, 엉뚱한 주석, 잘못된 주석은 달지 말고 있으면 삭제하자.

중복된 주석

코드만으로 충분한데 구구절절 설명하지 말자.

성의 없는 주석

작성할 가치가 있다면 잘 작성해라.

주석 처리된 코드

무조건 삭제하자


읽고 나서

이전 단원들에서 나왔던 이야기들이 다시금 나오는다. 중요하니 꼭 알아두자