14장 리팩토링 도구
코드를 리팩토링 하는데 가장 큰 장애물 가운데 하나는 리팩토링을 지원하는 도구가 거의 없다는 것이다.
도구를 이용한 리팩토링
- John Brant와 Don Roberts는 스몰토크에서 사용할 수 있는 리팩토링 브라우저를 개발했다.
- 자동화된 도구를 이용한 리팩토링은 디자인 변경을 좀 더 유동적으로 할 수 있다.
- 도구를 이용한 리팩토링은 자동으로 처리되기 때문에 테스트를 많이 하지 않아도 된다.
- 이클립스의 refactor 기능을 이용하면 편하게 리팩토링을 할 수 있죠.
리팩토링 도구에 대한 기술적 판단기준
- 리팩토링 도구의 주된 목적은 프로그래머가 프로그램을 다시 테스트하지 않고도 코드를 리팩토링 할 수 있도록 하는 것이다.
프로그램 데이터 베이스
- 프로그램 전체에서 여러 프로그램 엔티티를 검색 할 수 있는 능력
ex)특정 메소드를 참소 할 수 있는 호출부, 특정 인스턴스 변수에 대해 변수를 읽고 쓰는 모든 메소드를 찾는 것.
파스 트리 (parse tree)
- 대부분의 리팩토링은 시스템에서 메소드 수준 이하의 부분에 대한 조작을 해야 한다.
- 메소드에 대한 어떤 업데이트에도 메소드의 구조를 조작할 수 있어야 하는데 이렇게 하기 위해서는 파스 트리가 필요하다.
- Page 455 그림 참고
정확성
- 도구를 사용하여 리팩토링을 하더라도 프로그램의 동작은 그대로 유지해야 한다.
리팩토링 도구에 대한 실직적 판단기준
속도
- 매우 복잡한 경우에는 리팩토링을 수행하는데 필요한 분석(analysis)과 변환(transformation) 시간이 많이 걸릴 수 있다.
- 정확성과 상대적 시간 비용, 리팩토링 속도를 항상 고려해야 한다.
작업취소(undo)
- 리팩토링에서는 동작이 그래로 유지된다고 가정하기 때문에, 그 반대의 리팩토링(원래대로 작업을 돌리는 것) 역시 동작이 유지되어야 한다.
도구와의 통합
- 지난 10여년 간 통합 개발 환경(Integrated Development Environment:IDE)은 모든 개발 프로젝트의 핵심 이었다.
- IDE는 에디터, 컴파일러, 링커, 디버거와 프로그램을 개발하는 필요한 다른 도구를 통합했다.
- 스몰토르를 위한 리팩토링 브라우저의 초기 구현은 스몰토크 개발 도구와 분리되어 있었더니 아무도 사용하지 않았다.
마치며
- 자동화된 리팩토링 도구는 소프트웨어 프로젝트를 진행함에 따라 발생하는 복잡성을 관리하는데 가장 좋은 방법이다
문서에 대하여