3.2.4 리팩토링 제안
명령 추상화 내에 있는 메서드를 담을 수 있는 적절한 추상화를 찾거나 생성해야 명령 추상화 설계 악취를 리팩토링할 수 있다. 또 동일 추상화 내에 메서드가 요구하는 데이터를 캡슐화해서 응집력은 높이고 결합력은 낮춰야 한다.
예제 1을 위한 리팩토링 제안
재정 애플리케이션의 보고서 생성 기능을 위해 명령 추상화로 고통받는 각 클래스에 속한 메서드를 Report 클래스 자체로 옮기는 리팩토링 방식을 제안한다(그림 3.7 참조). 모든 보고서와 관련된 연산을 Report 클래스로 옮기면, Report 클래스를 적절한 ‘추상화’로 만들고 명령 추상화 악취도 제거한다. 이 설계를 따르면 더 깔끔하고 덜 복잡하다.
![](https://thebook.io/img/006804/065_2.jpg)
▲ 그림 3.7 보고서 생성 기능을 위한 리팩토링 제안(예제 1)