UI 모듈 리팩토링(Refactoring)

최근 UI 출력에 사용되는 컨트롤 개선작업을 진행하면서, 리팩토링시 중요한 점이 무엇일까 하는 궁금증이 생겼습니다. 리팩토링은 일반적으로 완성된 로직 또는 모듈의 성능을 높이고 유지보수를 쉽게 하려고 내부 소스코드를 정리하는 작업을 일컫습니다. 성능과 유지보수를 위한 사용 편의성 중 어느 것이 더 중요하다고 구분할 수는 없습니다. 성능은 기본이고 개발 편의성을 최고로 끌어올려야 올바른 리팩토링 아닐까 생각합니다. 아무리 성능이 좋아도 인터페이스를 실제로 사용하는 개발자 입장에서 활용하기가 까다로우면 그 개발자에게 득이 되는 건 없기 때문입니다.

- Refactoring 서문
리팩토링은 소프트웨어 시스템의 원래 기능은 그대로 두면서 내부의 구조를 개선하는 것을 의미한다. 그것은 버그의 가능성을 최소화하기 위해서 코드를 깔끔하게 정리하는 엄정한 방법이다. 한마디로 리팩토링을 한다는 것은 이미 작성된 코드의 설계를 나중에 개선하는 것이다.
- 임백준의 소프트웨어 산책 중
리팩토링은 새로운 코드를 만들면서 미래를 향해 나아가는 프로그래밍이 아니라, 이미 존재하는 코드를 부수면서 과거로 뛰어드는 프로그래밍이다. 마치 미래의 전쟁에서 승리하기 위해서 과거로 뛰어든 영화 터미네이터의 주인공처럼 프로그래머는 과거로 돌아가서 미래를 코딩한다. 그 때 그들의 손에 들린 무기가 바로 리팩토링이다.

툴을 이용한 리팩토링도 가능합니다. 마소의 "리팩토링을 통한 프로젝트 망치기"를 보면 툴 지원 없이 섣불리 리팩토링하지 말라는 내용이 나옵니다. 리팩토링으로 프로그램의 버그가 증가한다면 오히려 해가 되겠지요. C++ 리팩토링 툴로는 Visual Studio .Net 2003 버전을 지원하는 Ideat Solutions의 Ref++ 가 있고(현재 Ideat Solutions는 해체되어 더 이상 새로운 버전을 출시하지 않습니다.), 개발자들이 많이 사용하는 Whole Tomato의 Visual Assist X 에도 리팩토링 기능이 따로 존재합니다. Visual Studio .Net 2005 버전에 무료로 사용 가능한 Refactor! 도 있습니다. Visual Assist에서 사용 가능한 리팩토링 기능으로는 이름 변경(Rename), 함수 추출(Extract Method), 필드 캡슐화(Encapsulate Field), 시그너처 변경(Change Signature), 소스파일로 함수 정의부 이동(Move Implementation to Source File), 멤버 함수 / 변수 추가(Add Member), 유사 멤버 함수 / 변수 추가(Add Similar Member), 함수 주석(Document Method), 함수 선언부 생성(Create Declaration), 함수 정의부 생성(Create Implementation) 등의 있습니다. 반복적인 작업을 수월하게 하는 데 도움이 됩니다.

Before SteamAfter Steam
Steam 프로젝트의 파일 입출력 모듈 리팩토링, Photo courtesy of Gamasutra, Valve

리팩토링에 있어서 최종 버전이라는 건 있을 수 없습니다. 보통 성공한 온라인 게임의 수명이 10년을 넘기게 되는데, 소스코드가 너무나 완벽해서 10년 넘게 리팩토링 할 내용이 없다는 것은 있을 수 없는 일입니다.


관련 사이트

임백준의 소프트웨어 산책 - 3장 리팩토링 이야기, 임백준
마이크로 소프트웨어 - 2003년 9월호 리팩토링을 통한 프로젝트 망치기(?), 이복연
Refactoring - 마틴 파울러
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 외계고양이

이 글의 관련글
    이글의 태그와 관련된 글이 없습니다.

2008/09/12 17:00 2008/09/12 17:00
, , , ,
Response
No Trackback , 2 Comments
RSS :
http://nekothink.com/rss/response/14

Trackback URL : http://nekothink.com/trackback/14

Comments List

  1. sizz  2008/09/18 09:58 # M/D Reply Permalink

    잘 보고 가네.. 나도 이런거나 만들어 볼까? ㅋㅋ
    주말에 영어 공부하기 힘들더라 ㅋㅋ

    1. 외계고양이  2008/09/18 23:24 # M/D Permalink

      영어 공부도 해야 하고, 엔진 공부해야 하고, 플밍 공부도 꾸준히 해야하고.. 훔 해야할 일이 많아서 행복하네요..^^; 형도 블로거의 세계로 오세요!!

Leave a comment
[로그인][오픈아이디란?]
« Previous : 1 : ... 3 : 4 : 5 : 6 : 7 : 8 : 9 : 10 : 11 : ... 13 : Next »

블로그 이미지

게임 개발에 관심많은 고양이

- 외계고양이

Categories

Home (13)
리뷰:Review (5)
메모:Memo (3)
작업일기:Log (3)
OpenLibrary (2)

독도 광고 모금 캠페인