14장 리팩토링 도구

코드를 리팩토링 하는데 가장 큰 장애물 가운데 하나는 리팩토링을 지원하는 도구가 거의 없다는 것이다.

도구를 이용한 리팩토링

  • John Brant와 Don Roberts는 스몰토크에서 사용할 수 있는 리팩토링 브라우저를 개발했다.
  • 자동화된 도구를 이용한 리팩토링은 디자인 변경을 좀 더 유동적으로 할 수 있다.
  • 도구를 이용한 리팩토링은 자동으로 처리되기 때문에 테스트를 많이 하지 않아도 된다.
  • 이클립스의 refactor 기능을 이용하면 편하게 리팩토링을 할 수 있죠.

리팩토링 도구에 대한 기술적 판단기준

  • 리팩토링 도구의 주된 목적은 프로그래머가 프로그램을 다시 테스트하지 않고도 코드를 리팩토링 할 수 있도록 하는 것이다.

프로그램 데이터 베이스

  • 프로그램 전체에서 여러 프로그램 엔티티를 검색 할 수 있는 능력
    ex)특정 메소드를 참소 할 수 있는 호출부, 특정 인스턴스 변수에 대해 변수를 읽고 쓰는 모든 메소드를 찾는 것.

파스 트리 (parse tree)

  • 대부분의 리팩토링은 시스템에서 메소드 수준 이하의 부분에 대한 조작을 해야 한다.
  • 메소드에 대한 어떤 업데이트에도 메소드의 구조를 조작할 수 있어야 하는데 이렇게 하기 위해서는 파스 트리가 필요하다.
  • Page 455 그림 참고

정확성

  • 도구를 사용하여 리팩토링을 하더라도 프로그램의 동작은 그대로 유지해야 한다.

리팩토링 도구에 대한 실직적 판단기준

속도

  • 매우 복잡한 경우에는 리팩토링을 수행하는데 필요한 분석(analysis)과 변환(transformation) 시간이 많이 걸릴 수 있다.
  • 정확성과 상대적 시간 비용, 리팩토링 속도를 항상 고려해야 한다.

작업취소(undo)

  • 리팩토링에서는 동작이 그래로 유지된다고 가정하기 때문에, 그 반대의 리팩토링(원래대로 작업을 돌리는 것) 역시 동작이 유지되어야 한다.

도구와의 통합

  • 지난 10여년 간 통합 개발 환경(Integrated Development Environment:IDE)은 모든 개발 프로젝트의 핵심 이었다.
  • IDE는 에디터, 컴파일러, 링커, 디버거와 프로그램을 개발하는 필요한 다른 도구를 통합했다.
  • 스몰토르를 위한 리팩토링 브라우저의 초기 구현은 스몰토크 개발 도구와 분리되어 있었더니 아무도 사용하지 않았다.

마치며

  • 자동화된 리팩토링 도구는 소프트웨어 프로젝트를 진행함에 따라 발생하는 복잡성을 관리하는데 가장 좋은 방법이다

문서에 대하여