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 분 · 배준수

주석(3)

책너두 5기 10일차 로버트 C. 마틴의 클린코드 p.84 ~ p.94 내용 정리 함수나 변수로 표현할 수 있다면 주석을 달지 마라 명명법을 올바르게 사용하여 주석의 필요성을 없애자. 위치를 표시하는 주석 // Actions //////////// 같은 배너 아래에 모아두는 것은 필요할 때도 있지만 극히 드물게 사용해야 한다. 닫는 괄호에 다는 주석 차라리 함수를 줄이는데 시간을 쓰자 저자를 표시하는 주석 준수가 작성함은 소스 코드 관리 시스템이 있는 한 무의미한 주석이다. 주석으로 처리한 코드 내가 주석으로 처리하면, 다른 사람은 지우기를 주저 한다. 이전의 기록은 소스 코드 관리 시스템이 한다. 지금 필요없으면 지우자. 기록은 존재한다. ...

2023년 8월 10일 · 1 분 · 배준수

주석(2)

책너두 5기 9일차 로버트 C. 마틴의 클린코드 p.74 ~ p.83 내용정리 나쁜 주석 대부분은 나쁜 주석이다. 주절거리는 주석 특별한 목적이나 이유가 없는 주석. 달아야 한다면 제대로 명확하게 달자 같은 이야기를 중복하는 주석 코드 내용을 그대로 중복하는, 쓸데없는 주석 오해할 여지가 있는 주석 값이 반환되는 곳, 조건 등이 불확실하게 전달되선 안된다. 의무적으로 다는 주석 모든 코드에 주석을 달아야 한다는 등의 규칙은 불필요하다. 이력을 기록하는 주석 이젠 깃과 같은 관리 시스템이 존재하니 필요 없어졌다. ...

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

주석(1)

책너두 5기 8일차 로버트 C. 마틴의 클린코드 p.67 ~ p.73 내용정리 4. 주석 나쁜 코드에 주석을 달지 마라. 새로 짜라. 브라이언 W. 커니핸, P. J. 플라우거 주석은 실패를 만회하기 위해 사용된다. 주석 없이는 자신을 표현할 방법을 찾지 못해 할 수 없이 사용하기 때문이다. 주석은 거짓말을 한다. 코드는 유지 보수 되지만 주석은 그렇지 않기 때문이다. 코드가 수정되고 변화하고 진화하지만 주석은 그대로면서 거짓이 되고 잘못된 정보를 퍼뜨린다. 엄격하게 관리된 주석이 필요할 수도 있지만, 결국 최선은 주석이 필요없는 코드이다. ...

2023년 8월 8일 · 2 분 · 배준수