더북(TheBook)

예제 3을 위한 리팩토링 제안

보고서 생성은 필요한 기능이 아니며, 계층은 추측에 근거한 요구 사항을 바탕으로 추가했기에 전체 계층을 설계에서 제거하는 리팩토링 방식을 제안한다.

 

일화

미활용 추상화는 개발 조직 사이에서 흔히 일어나는 악취다. 흥미롭게도 이런 악취의 발생 이면에 숨겨진 주된 원인은 요구 사항 변경이다. 스크럼 프로세스를 따르는 한 프로젝트가 있었다. 스프린트마다 적절한 작업은 개발을 위한 백로그에서 식별했다. 다른 현실 세계 프로젝트와 마찬가지로 특정 스프린트를 마치고 나면 고객은 요구 사항을 바꾸고, 그 결과 새로운 기능이 예전 기능을 대체할 것으로 기대했다.

다음 스프린트를 시작하기에 앞서, 새로운 기능을 개발하는 과업 할당이 끝났다. 새로운 과업은 다른 개발자에게 할당된 것으로 드러났다. 이 개발자는 기존 구현을 재사용하는 대신 이를 간과한 채 바퀴를 새로 만들었다. 즉, 이 개발자는 동일한 작업을 수행하는 새로운 클래스를 만들면서 오래된 클래스를 제거하지 않았고, 이것이 사용하지 않은 채로 남아 미활용 추상화 악취로 이어진 것이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.