'리팩토링 패턴'에 해당되는 글 2건

  1. 2008.09.01 [rwb] 리팩토링 작은단계
  2. 2008.08.27 [rwb] 리팩토링 기본패턴
리팩터링을 하나 선택해서, 큰 단계로 작업 할 수 있더라도, 이 접근법을 이용해 작은 단계로
만들수 있는 지점을 찾아보자.


책에는 일반 자바 코드로 되어있지만, 서블릿 코드로 작성해 본다.
TODO. 기존에 사용하던 DanalExchangeServlet 서블릿을 COMSServlet로 변경하고, 매핑된 서블릿 URL도
          새로 작성하여 변경할것.
(리팩토링은 아니지만, 안정성을 유지하면서 시스템을 변동시킨다는 점에서..)

1. 같은 기능을 작성하는 Copy한 클래스를 작성. COMSServlet이라 명명

< 시스템에 COMSServlet이 사용가능하기 위해선 WAS 재시작 필요 >
2. 새 서블릿에 맞는 DD에서의 선언
 <!-- 연동 프로세스용 -->
 <servlet>
    <servlet-name>DanalProcess</servlet-name>
    <servlet-class>com.servlet.externalDB.DanalExchangeServlet</servlet-class>
 </servlet>
 <servlet-mapping>
    <servlet-name>DanalProcess</servlet-name>
    <url-pattern>/wml/DanalProcess.do</url-pattern>
 </servlet-mapping>

 내용은 같지만 클래스가 새것인 DD 선언 추가
 <servlet>
  <servlet-name>COMSProcess</servlet-name>
  <servlet-class>com.servlet.externalDB.COMSServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>COMSProcess</servlet-name>
  <url-pattern>/wml/COMSProcess.do</url-pattern>
 </servlet-mapping>

< DD의 새로운 선언이 적용 되기 위해선 WAS의 재시작 필요 >
3. 두개의 서블릿이 모두 매핑되어 있는 상태에서, 신규 서블릿으로 모두 변경

4. 구 서블릿의 매핑 유무를 확인, 구 서블릿의 상속, 참조들을 확인후 삭제

WAS의 재시작이 2번이나 필요하다는 점에서 서비스의 안정성을 떨어뜨린다고 할수도 있다.
하지만, 코드의 안정성을 위해서는 구 서블릿이 모두 삭제되기 전에는 클래스를 삭제해서는 안된다.
또한, DD 선언시 클래스를 찾지 못하는 등의 오류가 발생하게 되면 서비스 불가 상태이니
두번의 재시작을 감수한다.
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 영겁회귀

리팩토링의 기본 패턴은 아래와 같은 싸이클로 이루어진다.

1) 작업 프로그램을 시작
2) 냄새가 날때까지 다음(a->b->c)을 수행
      a) 가낭 나쁜 냄새를 골라 낸다
      b) 그 냄새를 겨냥한 리택토링을 선택한다.
      c) 선택한 리팩토링을 적용한다.

리팩토링을 통한 단순한 디자인의 코드는 다음과 같은 특징을 갖는다.

- 모든 테스트를 실행할수 있어야 한다.
- 중복된 로직이 없어야 한다.
  < 병렬 클래스 계층구조와 숨은 중복에 주의한다.>
- 프로그래머들에게 중요한 의도를 모두 알려줄수 있어야 한다.
- 클래스와 메소드는 가능한 적어야 한다.
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 영겁회귀

티스토리 툴바