리팩토링

|
Fowler가 쓴 리팩토링이라는 책이 있습니다. 프로그래밍을 하면서 생각해볼 수 있는 여러가지 개선사항(특히 객체지향언어에서)들을 하나하나 이름을 붙여가면서 가이드를 해놓은 실용적인 책중에 하나라고 봅니다. 객체지향 프로그래밍을 하는 분들은 꼭 봐야 하는 책이라고 생각이듭니다만 최근 개발툴들을 보니 이러한 리팩토링을 자동/반자동으로 해주는 기능들이 하나같이 들어가 있더군요. Visual Studio 2005, Borland Developer Studio 2006, 자바의 이클립스에도 있는지 모르겠지만 어떤 자바 개발도구에 있는 것을 꽤 오래전에 본 기억이 납니다.(이 기능때문에 무슨 상도 탄 것 같은데 기억이 안나네요.) 아마도 앞의 두 제품도 이러한 경향을 따른 것이 아닐까 싶습니다. 사실 제가 이책을 2000년도 쯤인가에 볼때 생각난 것은 이랬습니다. "머 이래 당연히 이렇게 고쳐야 하는 것들 조차도 하나하나 이름을 붙이다니 정말 우리나라 사람들과 그 접근방법이 정말 다르군. 개발을 하면서 자신의 코드을 붙잡고 씨름하는 사람들이라면 당연히 해나가야 하는 것들을 일일히 이름을 붙여가면서 그 기법을 정의해 놓았다니 대단하군" 어쩌면 이런 생각은 제법 C++을 일찍 접한 저로써는 생각할 수 있었겠지만 최근에 C++, C#, Java을 접하는 사람들에게는 정말 날로 먹을 수 있는 산지식이라고 생각이 들더군요. 어떤 것은 기계적으로 해도 도움이 되는 부분들이 있고 어떤 것들은 어설프게 적용해서 별로 좋지 않을 수도 있지만 그것은 프로그래머들의 몫이라고 생각이 듭니다. 툴에도 이러한 기법들이 자동화해서 들어갔다는 것은 - 물론 모든 리팩토링기법이 들어가 있는 것이 아닙니다. 대표적이고 쉽게 자동화할 수 있는 것들만 적용되어 있는 것으로 압니다 - 그만큼 이러한 리팩토링에 대한 것들이 객체지향 개발을 할 때 많이 보편화되어가고 있다는 생각이 들더군요. 그런데도 제 주위에는 이러한 책을 보는 노력을 하는 사람이 얼마나 되는지는 잘 모르겠습니다. 그 리팩토링이라는 행위가 주는 의미보다는 "어 개발툴이 이런 것도 해주네!" 하면서 사용하는 프로그래머들이 더 많겠죠. 생각해보니 제가 C++ 프로그래밍을 하면서 가장 큰 도움이 된 책은 C++ 언어문법 책이 아니라 94년도경에 어느 유럽의 통신회사에서 만든 C++ 개발 가이드라인 문서였습니다. 버그 및 코드를 보다 잘 읽기 위한 네이밍 룰과 코딩하면 실수하기 쉬운 부분을 Rule화 해서 작성된 포스트스크립트 문서였지요. 프린트를 해서 팀내에서 공유하고 교육했던 기억이 나는군요. 당시 워낙 교재들이 변변치 않아서 너무 소중한 자료였지요. 지금이야 너무나도 많은 책들이 나와서 질릴정도지만요. 주위에 고수들이 없어도 이런 좋은 책들은 빠짐없이 사서 보는 열정을 잃지 않았으면 합니다. 바로 고수들의 숨결들을 느낄 수 있을테니까요. 이러한 경험을 전달해주는 책은 별로 없지만 발견되면 놓치지 않고 챙겨보는 센스를 가진 프로그래머들이 되었으면 합니다. 이런 측면에서 보면 "실용주의 프로그래머" 라는 책은 반드시 봤으면 하는 책입니다. 코더가 아닌 프로그래머를 원하는 이들이라면요.
And