| 프로그램은 항상 개발자의 마음대로 작성되지는 않는다. 그것은 개발자의 스킬과 경험에도 문제가 있기는 하지만 그리 충분하지 못한 시간과 개발을 주문하는 사람의 요구파악이 정확하지 않은 경우에 더욱더 하다.그런경우에는 필히 다음을 위한 업데이트나 요구자에 의한 기능추가가 있기 마련인데 개발을 2~3달을 하다보면 처음에 개발을 하던 자신의 코드조차 무엇을 하는 것인지 파악을 하는데 난감하고 당혹스러운 경험을 한적이 한두번이 아니다. 그것은 우리가 객체지향적인 설계를 하지 못했다는 증거인데, 이것을 탓할 만한 이유는 아무것도 없다. 일반적은 기초 프로그램의 서적은 객체지향의 언어를 가지고도 그것을 진정한 객체지향적으로 설명한 책의 거의 없으며 기초문법이나 쓰임새에 치중하는 경우가 허다하기때문이다. 또한 객체지향 개발은 개발자가 경험과 노력을 통해서 얻어지는 것이기때문에 객체지향적인 설계를 하지 못했다 해서 내가 혹시 잘못 배운것은 아닌가 의심하고 탓할 필요는 없다는 것이다. 하지만 프로그램을 멋있고 재사용가능하고 요구에 맞게끔 빠르게 기능추가를 할수 있고 협업을 하게끔 하는 수준까지 오르려면 당연히 객체지향을 연마해야 한다. 이것을 위해서 1-2년전 국내개발자들 사이에서는 디자인패턴 이라는 방법이 유행을 했었다.나 또한 여러 디자인패턴 책을 들여다 보았지만 솔직히 여간해서 그것을 이해한다는 것은 쉬운일이 아니였다. 그래서 덮어두고 있다가 이 책을 읽게 되었는데 책이 괜잖은 것같다. 일단은 필자가 세심하게 비교를 해놓은 부분이 마음에 드는데 디자인패턴을 적용하지 않았을때의 난관과 디자인패턴을 적용할때의 유연함을 패턴마다 비교하고 있어 이해가 그나마 쉽다.(단 Gof의 23개의 디자인 패턴 모두가 아니라 핵심적인 11개정도의 패턴을 다루고 있다.) 또한 UML의소개를 잠시하고 있는 부분도 약간의 보너스로 얻을수 있으며 특히 리팩토링의 소개부분이 좋았던것 같다. 오히려 이 책을 읽으면서 내가 배운것은 디자인패턴은 너무 큰 주제다 단번에 얻을수도 없지고 반복적인 노력이 있어야 한다는 것을 배우고 디자인 패턴전에 리팩토링을 해야 한다는 느낌을 더 받았다. 결국의 결과물은 비슷하지만.... 초보개발자/설익은 개발자에게는 진정한 객체지향과 디자인패턴이 솔직히 구차하고 코드를 더 복잡하게 할수 있어보인다. 하지만 자신의 코드가 재사용되고 또한 유연한 블럭같이 보다 많은 모습으로 바뀌기를 바란다면 이 책을 먼저 보라. 그렇다면 한단계 한단계 나하가는 어드바이스적인 느낌을 받을 것이라고 생각이 된다. 그렇다고 앞서 말했지만 한번에 모든것을 얻으려고 한다면 조금은 실망할수도 있다는 것을 잊지말자..... |