'Refactoring'에 해당되는 글 1건

  1. 2008.08.15 리팩토링(Refactoring)이란 무엇인가? 2
2008. 8. 15. 01:39 과거 저장소/IT infomation
728x90
리팩토링(Refactoring)이란?
한마디로 말하면 "프로그램의 외부사양(입력과 출력)을 변경하지 않은 채 내부구조를 안전하게 개선하는 테크닉" 이라고 표현할 수 있습니다.

목적
그렇다면 이런 리팩토링이라는 작업을 수행해야 하는 이유는 무엇일까요?
그건 궁극적으로 프로그램을 이해하기 쉬운 상태로 유지하고, 확장성과 재사용성을 높이는 것이라고 할 수 있습니다.

프로그램의 수정이라는 행위에 대해서 4가지 정도의 예를 들 수 있습니다.
  1. 디버그(Debug)
  2. 기능 확장(Expansion)
  3. 퍼포먼스 개선(Tuning)
  4. 리팩토링(Refactoring)

위 네 가지를 어떤 상태(State)에서 수정하느냐의 관점에서 보게 되면 디버그나머지 세 가지로 분류 할 수 있습니다.
  - 디버그는 정상작동을 하지 않는 프로그램을 수정하는 행위
  - 나머지 세 가지는 정상작동을 하는 프로그램을 수정하는 행위

나머지 세 가지들은
  - 기능확장은 그 말 그대로 기능확장이 필요할 때 사용하게 되는 부분
  - 퍼포먼스 개선 또한 성능을 향상시키기 위하여 사용하게 되는 부분
하지만 리팩토링은 아무 문제가 없는 프로그램에 대해 행하는 부분입니다.

리팩토링을 안전하게 수행하는 요령
  1. 리팩토링과 다른 작업을 분리합니다.
  2. 리팩토링 전후에 반드시 테스트합니다.
  3. 한번에 최소한의 작업만 수행합니다.
  4. 기존의 로직에 미치는 영향을 적게합니다.
  5. 반드시 백업을 합니다.

- 백업 관리에 있어서 제공하는 툴로는 오픈소스S/W인 CVS, MS의 Visual SourceSafe 등이 있습니다.

이런 리팩토링에 대해서 노하우들이 적립되어 있는데, 그것이 바로 "리팩토링 카탈로그"입니다.

사용자 삽입 이미지

대표적인 리팩토링인 "메소드 추출"의 순서는 다음과 같습니다.
  1. 적절한 이름의 새 메소드를 생성합니다.
  2. 추출하고 싶은 로직을 새 메소드로 복사합니다.
  3. 추출된 로직 속의 로컬 변수를 새 메소드에 적합하도록 변경합니다.
  4. 컴파일 하여 테스트 합니다.
  5. 원래 메소드를 새로운 메소드를 호출하도록 변경합니다.
  6. 컴파일 하여 테스트 합니다.

간단하게 리팩토링이 무엇인지에 대해서 알아보았습니다.
관심이 있으신 분은 "Refactoring : Improving The Design of Existing Code" 책 또는 "저자 : 마틴파울러의 http://www.refactoring.com"을 방문해 보십시오.
물론 저도 아직 읽어보지 못했습니다. ^^

출처 : 아무도 가르쳐 주지 않았던 소프트웨어 설계 테크닉 - Watanabe Kouzo외 9인 저 참고
728x90
posted by acedon