Don't give up!

[클린코드] 16장 SerialDate 리펙터링 본문

개발서적/클린 코드

[클린코드] 16장 SerialDate 리펙터링

Heang Lee 2021. 8. 5. 21:13
이 글은 로버트 마틴의 '클린 코드'를 읽고 TIL(Today I Learned)로써 정리한 내용을 기록하는 글입니다.
자세한 내용은 책을 통해 확인하실 수 있습니다.

알라딘: 클린 코드 Clean Code (aladin.co.kr)

 

클린 코드 Clean Code

로버트 마틴은 이 책에서 혁명적인 패러다임을 제시한다. 그는 오브젝트 멘토(Object Mentor)의 동료들과 힘을 모아 ‘개발하며’ 클린 코드를 만드는 최상의 애자일 기법을 정제해 책 한 권에 담았

www.aladin.co.kr

SerialDate 리펙터링

이번 장은 JCommon 라이브러리의 SerialDate라는 클래스를 리펙터링하는 과정을 보여줍니다.
코드가 너무 방대하여 자세한 과정과 내용은 책을 통해 확인해주신다면 감사하겠습니다.

첫째, 돌려보자

  • SerialDateTest라는 클래스는 단위 테스트 몇개를 포함하고 실패하는 테스트 케이스는 없다.
  • 하지만 테스트 케이스를 훑어보니 모든 경우를 점검하지 않는다는 사실이 드러났다.
  • 클래스를 철저히 이해하고 리펙터링하려면 훨씬 높은 테스트 커버리지가 필요하다.
  • 모든 코드를 테스트할 수 있도록 테스트를 추가하고, 추가된 테스트로 인해 발생하는 버그들을 고쳐야 한다.

둘째, 고쳐보자

  • 테스트 케이스를 작성하고 통과하면 클래스는 제대로 돈다고 믿을 수 있다.
  • 이제부터는 클래스를 올바로 고치는 작업이 필요하다.
  • 부모 클래스는 파생 클래스를 몰라야 바람직하다.
  • 추상 메서들로 위임하는 정적 메서드는 SINGLETON, DECORATOR, ABSTRACT FACTORY 패턴 조합을 사용한다.
  • 테스트 커버리지가 줄어들더라도 클래스 크기가 작아져서 테스트하지 않는 코드의 비중이 커져서 그럴 수 있다.
  • 너무 사소한 코드는 테스트할 필요가 없다.