리팩토링전의 클래스 다이어그램

위의 클래스 다이어그램은 리팩토링 하기전의 클래스 다이어그램 입니다. 언뜻보기에는 문제가 없어보이지만, AlphaStyleSoftJob과 AlphaStyleHard 클래스에서 AlphaStyle에 관한 코드가 있을듯 합니다. 또한 BetaStyleSoftJob과 BetaStyleHardJob도 마찬가지로 BetStyle에 관한 코드가 있을것 같습니다.

이러한 것을 리팩토링에서는 {중복된 코드}라는 코드의 악취라고 합니다.

중복이 발생하게 되면 유지보수 단계에서 많은 비용이 발생하게 됩니다. 위의 예로, AlphaStyle에 대한 속성값을 변경할라치면 AlphaStyleSoftJob과 AlphaStyleHardJob이라는 두개의 클래스 모두 변경이 필요합니다.

“켄트 벡의 구현 패턴” 에서는 위와 같은 중복을 없애는 한가지 방법으로 프로그램을 여러가지 작은 부분 – 짧은 구문, 짧은 메소드, 작은 객체, 작은 패키지 – 으로 나누라고 하고 있습니다.

위의 클래스 다이어그램에서 보이는 하위 클래스 AlphaStyleSoftJob에는 두개의 개념이 포함되어 있습니다. 이러한 부분을 두가지 개념으로 나누어서 개념의 중복을 없애 보면, Style과 Job 으로 나눌수 있을것 같습니다.

이렇게 나누어진 개념으로 다시 상속구조를 다이어그램으로 나타내어 본것은 아래와 같습니다.

image

위와 같은 구조에서는 대부분의 코드 변경이 지역적으로 일어날 것을 알수 있습니다.

'프로그래밍' 카테고리의 다른 글

중복을 최소로 하는 프로그래밍 하기  (4) 2010/07/01
CDATA !?  (0) 2009/04/22
Posted by 웹눈