sua***
2016-05-02

프로그램을 혼자서 만들 수 있는 시대는 지났다. 게다가 한번 출시된 프로그램은 지속적인 업데이트와 유지보수가 이루어지는 만큼, 여러 개발자가 협업하기 좋게 ‘읽기 좋은 코드’와 ‘효율적인 디자인 패턴’을 적용해야 한다. 이 책은 게임 프로그래밍에 자주 활용하는 코드를 예로 들면서 개발자가 한 단계 성장하는 데 필요한 코딩 기술 전반을 다룬다. 1장에서는 이해하기 좋은 코드를 작성하는 코딩 기술을, 2장에서는 간결한 설계를 위한 원칙과 디자인 패턴을
|
|
|
제목만 본다면 이 책을 잘 읽고 잘 이해하고 잘 따라한다면 왠지 코딩의 기술이 늘 것 만 같은 책이다. 늘 그렇듯 제목은 현실과 살짝 다르기도 하다.
아무튼 이책의 원서의 제목은 "게임 프로그래머를 위한 코딩 기술"이다.
비교적 얇은 두께에 그동안 읽었던 리뷰 책들에 비하면 비교적 짧은 시간에 읽은 축에 속한다. 내용도 그렇고 어렵지는 않아서 조금은 더 쉽게 읽힐 수 있었던 책이라고 생각을 한다.
확실히 저자는 다양한 실전 경험과 또한 강의 경험을 가지고 있다는 것을 느낄 수 있었단. 주제를 풀어내는 방식 자체가 일단 마음에 든다. 책의 전체적인 구성은 읽기 좋은 코드를 작성하는 간단한 기술 부터 시작한다.
당연히 복잡한 논리의 중첩을 피해야 한다는 간단한 것에서 부터 시작하여 함수 및 클래스의 활용까지 두르 두르 살펴주고 있단. C++로 만들어진 게임 프로그래밍의 요소들을 주제로 설명하고 있기에 특히나 STL이 많이 언급되고 있다는 것도
주목할 부분이라고 생각이 든다.
게임 코드로 알아보고 있다고 해서 게임 전체를 기대해서는 안된다. 게임의 일부분을 이루는 코드를 저자가 말하는 효과적인 작성 방법으로 대체하는 기법들을 다루고 있는 것이기 때문이다. 이렇게 앞쪽에서는 읽기 좋은 코드 즉 논리의 중첩등을 피하는 등의 방법을 써서 효과적인 코드를 만드는 방법을 설명하고 있고(그것이 물론 시간 복잡도 측면에서의 절대적인 개선 이것은 아니다.) 뒷쪽으로 갈 수 록 객체 지향적인 것에 대한 언급을 더 많이 해주고 있다.
또한 마지막으로 갈 수 록 이 책이 객체지향 설계를 언급하고 있는 책인지라는 생각이 들 정도로 객체지향 클래스 설계 및 패턴에 관한 이야기 들이 너무 많이 언급이 되고 있다. 물론 이것도 코딩의 기술이라면 할 말 없다.
책의 마지막 챕터는 소스 코드 품질 측정을 위한 기본적인 수치들과 프로그램을 이용한 방법들을 소개해주고 있다. 이 부분은 처음 접해본 것이라서 기존의 빅오 표기법을 통한 분석에만 익숙했었는데 매트릭스를 측정한 코드의 분석 은또 다른 느낌으로 다가왔다.
|
|
|
다음 그림은 책에서 언급한 sourcemonitor 을 이용해 분석해본 짧은 코드이다. 나름 멋있는 분석을 내놓았지만…
코드의 간결화 혹은 읽기 쉬운 코드의 중요성은 말할 필요가 없다. 이 것은 수업 시간에도 학생들에게 제발 나를 배려한 코드를 작성하고 제출해달라고 언급 하기도 하니까 말이야. 물론 숏 코딩을 즐기는 사람들도 많다. 언제나 그렇듯 중요한 것은 문제 해결을 위한 알고리즘 자체의 개선에 있는 것이다. 결국 그 과정에서 이러한 간결화나 읽기 쉬운 코드 그리고 클래스의 설계 및 패턴의 인식 등을 통한 것들이 병행이 된다면 훨씬 좋은 결과물들이 나올 것이라고 생각한다.
다시 한번 말하지만 알고리즘의 개선을 통한 시간 복잡도의 개선이 더 중요하다고 생각한다. 이 책에서 언급하고 있는 나머지 코딩의 기술들은 그것을 이루는 과정에서 나오는 과정에 지나지 않는다. 중요한 것은 역시나 알고리즘이다.
그러나 이 책은 알고리즘에 관한 책이 아니다.
책을 읽는 내내 (물론 C++ 이 기반이여서 그렇지만) STL에 대한 공부를 더 해야 겠다는 생각과 람다에 대한 공부를 해야 겠다는 생각을 할 수 밖에 없었다. 책에서 언급되는 것들이 그 이유기도 하지만 요즘은 저지 사이트의 다양한 문제들도 STL을 많이 사용하고 있기에
자 진짜로 결론을 내어보면
이 책은 논리의 간소화 혹은 나머지 다양한 기법 혹은 기술들을 통해 읽기 쉬우면서도 명확하고 복잡하지 않은 형태로 코드를 변경하는 기법을 통해 코딩의 효율성을 안내하고 있다. 또한 그 과정에서 클래스를 사용하면서 프로그래머가 가져야 하는 설계 기법에 대한 이야기들 그리고
자신이 작성한 프로그램의 분석(시간 복잡도 까지는 아님)을 통해 조금은 수치화된 형태로 자신의 프로그램을 다시 한번 바라볼 수 있도록 해주고 있다.
이것도 중요하지만 알고리즘 공부를 찬찬히 그리고 보다 중요한 문제를 해결할 수 있는 논리를 키우는 것이 더 중요하다고 생각을 하며 마쳐본다.
P. S 이 책에서 말하고 있는 다양한 노하우들을 책을 읽으면서 정리해본 것을 다시 적어보며 진짜 마친다..