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

2023년 9월 20일 · 1 분 · 배준수

SerialDate 리팩터링(2)

책너두 5기 38일차 로버트 C. 마틴의 클린코드 p. 352~ p.362 내용정리 16. SerialDate 리팩터링 리팩터링의 기술 명명법을 통해 명확히 메서드와 함수의 역할을 파악할 수 있도록 한다. 불필요한 주석은 삭제한다. 변수의 public/private 필요 여부를 파악한다. 변수는 최대한 사용 위치에 가깝에 옮긴다. 읽고나서 JAVA는 어려워.

2023년 9월 19일 · 1 분 · 배준수

SerialDate 리팩터링(1)

책너두 5기 37일차 로버트 C. 마틴의 클린코드 p. 344~ p.351 내용정리 16. SerialDate 리팩터링 남의 코드를 리팩터링 하는 것은 편안하게 여겨야 할 활동이다. 남이 내게 해준다면 감사히 반겨야 할 호라동이다. 비판이 있어야만 발전이 가능하다. 첫째, 돌려보자 테스트 케이스가 모든 경우를 점검하는지 확인하자. 필요하다면 단위 테스트가 실행하는 코드와 실행하지 않는 코드를 조사해보자. 높은 테스트 커버리지를 달성하자. 둘째, 고쳐보자 코드를 고칠때마다 단위 테스트를 실행해서 확인하자. 읽고 나서 오늘도 리팩터링은 계속 된다.

2023년 9월 18일 · 1 분 · 배준수