디자인패턴 디자인패턴과 리팩토링의 관계

황제낙엽 2007.11.20 12:20 조회 수 : 73 추천:106

sitelink1  
sitelink2  
sitelink3  
extra_vars4  
extra_vars5  
extra_vars6  
자바 디자인패턴과 리팩토링 662페이지 참고

디자인패턴과 리팩토링의 지향점은 공통적으로 변화를 포용할 수 있는 유지보수성이 뛰어난 소프트웨어의 완성이다.
그러나 이들을 소프트웨어 개발에 적용하는 관점은 조금 다르다.

일반적으로 개발자는 소스를 코딩하기 전인 소프트웨어 설계의 단계에서 다지인 패턴을 적용하려고 노력한다.
많은 시간이 걸릴지라도 코딩을 하기 이전에 미리 소프트웨어의 구조를 UML등의 모델링 언어를 사용하여 결정하는 것이
전체 소프트웨어 개발시간을 절약한다는 철학을 기반으로 디자인 패턴을 사용하는 것이다.
이것은 RUP 개발 방법론의 기본 철학이다.

반면 이미 만들어져 있는 소스 코드에는 리팩토링을 적용하여 이해하기 쉽고 변경을 포용할 수 있는 구조로 변경한다.
코딩하기 전의 소프트웨어 설계의 시간을 최소화하고 일단 소스 코드를 직접 만들어가면서 프로그램의 내부구조를 완성해
나가자는 철학 밑에서 리팩토링은 사용된다.
이것은 XP 개발 방법론의 기본 철학이다.

단적인 예를 들면, 디자인패턴은 프로그램의 숲을 보는것이라면, 리팩토링은 프로그램의 나무를 보는 관점이다.

디자인패턴을 처음 입문하는 사람들의 특징은 모든 프로그램 설계에서 되도록 자신이 알고 있는 패턴을 적용해 보고 싶어한다는 것이다.
물론 이러한 자세는 학습의 의미에서 매우 중요하다.
적용된 패턴이 얼마나 효율적인지 그리고 유연한지를 테스트해보고 장점, 단점 그리고 적용시의 문제점 등을 파악해야 하니까.
그리고 그것이 익숙해지면 정말 자신이 필요한 부분에 필요한 패턴만을 적용할 수 있게 되고,
더 나아가 복합 패턴을 적용하기도 하는 등의 응용 수준까지 발전하게 된다.
이러한 단계로 거듭나기까지 리팩토링은 자연스럽게 패턴 설계에서 학습되게 된다.
그러므로 디자인패턴을 학습시에 리팩토링 기술도 같이 학습하게 되면 그 효과는 배가 될 것이다.