알기쉬운 디자인 패턴그간 C++을 C처럼 사용해 오다가 객체지향형 프로그래밍의 필요성을 절실히 느끼면서 GoF 책에 한번 좌절하고 알게된 책.. 읽으면서 정말 감동의 물결이다.. 아울러 그간 내가 얼마나 무식하게 코딩을 해왔는가 하는 자아성찰도 곁들여 가며.. 음, 요즘엔 코딩할 기회가 없으니 그 슬픔은 더욱 배가 되어간다.. 진작에 남들이 추천하는 책을 읽어봤어야 했는데.. 사실 이 책은 GoF와 더불어 원서로 무지하게 추천이 되던 책으로 알고 있다.. 다행이 요즘엔 좋은 번역서까지 나왔는데 안 읽고 있었으니, 이건 프로그래머로서 죄악이라 하지 않을 수 없다..
많은 버그들은 코드를 변경함으로써 발생한다.
아무리 노력하고 분석을 훌륭하게 하였다 하더라도, 결코 사용자로부터 모든 요구사항들을 다 얻어낼 수는 없다. 미래에 대해 알 수 없는 것들이 너무나도 많다. 모든 것들은 변화한다. 항상 그래왔다. 여러분이 변경되는 것을 막기 위해 할 수 있는 것은 아무것도 없다. 그러나 그런 이유로 무기력해질 필요도 없다.
필자의 30년간의 프로그래밍 경험에 비추어 보면, 요구사항들에 대해 배웠던 것중 중요한 점은 바로 "요구사항은 항상 변경된다".
반드시 변경을 잘 수용할 수 있도록 프로그램을 작성해야 한다는 것을 의미한다.
객체들에게 책임을 전가하라. 그러면 변경을 최소화 할 수 있으며, 객체들을 사용하기 쉬워지며, 의존관계가 줄어든다. 원치않는 부작용이 줄 것이며, 변화에 대응, 유지보수가 그만큼 쉬워지게 된다.
훌륭하고 완벽한 요구사항의 정의를 만들어내지 못한 것에 대해 우리 자신이나 사용자들을 비난하기 보다, 변경되는 요구사항을 더욱 효과적으로 대응할 수 있는 개발 방법을 채택해야 한다.
우와, 얼마나 멋진가.. 역쉬 고수들의 세계는 따로 있었던 것이다.. 이런 반열에 오른다면 프로그래밍은 3D 노가다의 영역이라고 슬퍼하고만 있지는 않을 것이다.. 그동안 내가 무식했던 것이다.. 물론, 디자인 패턴이 무슨 요술지팡이나 마술램프는 아닐것이다.. 세상에 지름길은 없다.. 하지만, 선배들이 닦은 경험을 책 몇권으로 얻을 수 있다는 건 후배들의 특권이다.. 자, 보다 나은 세상을 위해 열심히 공부해보세~
2004.05.11 덧글..
캡슐화는 단순히 데이터를 숨기는 것 보다 더 많은 이유 때문에 존재한다. 온갖 방법의 숨기기를 포함하기 위해 정의를 확장함으로써, 그리고 객체들간의 계층을 생성하기 위해 캡슐화를 사용할 수 있다. 이러한 캡슐화는 다른 면에 나쁜 영향을 주지 않고 객체간 계층의 한 면에 있는 것을 변경 가능하게 해준다.
행위의 변화를 담아내기 위해 객체를 이용하는 개념은 데이터에 변화를 담아내기 위해 데이터 멤버를 이용하는 것과 하등 다르지 않다.
제8장 요약문에서 발췌..
주옥같은 명대사들이 쏟아지는 한편의 영화를 보는 듯 하다.. 그간 객체지향형 프로그래밍에 대한 편협된 생각을 버리고 사고의 확장이 명쾌해지게 해준다.. 어렴풋이 희미하던 개념들이 꽤 선명해지고 있다..
C++에서 자바로의 큰 변화 (아직까지는 자바에서 .NET으로의 변화, 특히 C#에서 이만큼의 프로그래밍 언어적 차원에서의 패러다임의 변화는 느껴지지 않는다.. C#을 더 공부해보면 명확해 지리라..), 그리고 클래스 기반에서 컴포넌트 기반, 그리고 이제는 서비스 기반의 SOA.. 이 모든 노력들을 통해 위대한 사상가들이 얻고자하는 궁극의 모습이 보이는 듯 하다..