[16장] SerialDate 리팩터링

DAYEON·2021년 8월 1일
0

Clean Code

목록 보기
17/17
post-thumbnail

SerialDate : 날짜를 표현하는 자바 클래스


첫째, 돌려보자

  • 단위 테스트 케이스 몇 개를 포함하는 SerialDateTests 클래스
  • 실패하는 테스트 케이스는 없지만 모든 경우를 점검하지는 않음
  • 주석처리 된, 실패한 테스트 케이스가 있음
  • 경계 조건 오류 발견

둘째, 고쳐보자 (과정)

  • 소스 코드 제어 도구를 사용하므로 필요성이 없어진 변경 이력 제거
  • 통합할 수 있는 import 문, java.util.*으로 수정
  • 클래스 이름 수정 SerialDateDayDate
  • 불필요한 주석 제거
  • 상수 모음인 MonthConstantsenum으로 정의
  • ABSTRACT FACTORY 패턴 적용하여 DayDateFactory 생성
  • 메서드 이름 변경 createInstancemakeDate
  • 사용하지 않는 변수, 메서드, 생성자 제거
  • 연관이 높은 코드들은 위치 또한 가깝게 배치
  • 연산자를 사용해 하나의 if 문으로 수정
  • 단순화 할 수 있는 메서드는 합쳐 단순화
  • 이름을 좀 더 서술적으로 변경
  • 정적 메서드를 인스턴스 메서드로 변경
  • 중복 인스턴스 메서드 제거


둘째, 고쳐보자 (정리)

  • 1) 주석은 간단하게 개선
  • 2) enum을 모두 독자적인 소스 파일로 옮김
  • 3) 정적 변수와 정적 메서드를 하나의 새 클래스로 옮김
  • 4) 일부 추상 메서드를 수준에 따라 특정 클래스로 끌어올림
  • 5) 메서드 이름을 변경하고, 목적과 의미에 따라 접근자와 접근제어자 재설정
  • 6) 중복 메서드를 제거하여 명확하게 함
  • 7) 이름에서 의미없이 남발하던 특정 키워드를 없애고 적절하게 변경

결론

  • 보이스카우트 규칙을 따라 더 깨끗하게 코드 체크인 진행
  • 결과 → 테스트 커버리지 증가, 버그 해결, 코드 크기 감소, 코드 명확

인상 깊었던...

누구나 사용하고 누구나 비판하라고 코드를 만천하에 공개했다. 참으로 훌륭한 행동이다!

시간은 걸렸지만 가치 있는 작업이었다.

다음 사람은 우리보다 코드를 좀 더 쉽게 이해하리라. 그래서 우리보다 코드를 좀 더 쉽게 개선하리라


profile
노력하는 초보 개발자

0개의 댓글