이 책은 C++ 프로그램을 작성할때에 고려해야 할 101가지 사항에 관해서 다루고 있다. 처음에 목차를 쭈욱 훑어보다 100번에서 보는 것을 보고는 잠시 당황했었다. 왜 101가지지? 하는 생각을 2.3초간 했는데 돌아와 보니 목차가 0번에서 시작하고 있었다. 저자의 센스가 느껴지는 부분이었다.
101가지 모두 주옥같은 규칙들이라 뺄 것이 없을 것 처럼 느껴졌다. 단지 몇 가지 규칙들은 설명이 다소 추상적이라 몇 년간 개발을 해본 사람이라면 충분히 공감할 만 하지만, 이제 막 C++ 문법을 익힌 사람이 본다면 다소 당황할 수 있을 것 같았다. 각 챕터가 그렇게 길지 않은 내용으로 간략하게 규칙에 대해서 핵심만 설명하고 있다. 보통 3~4페이지를 넘지 않는다. 따라서 압축되어 있기 때문에 고급 독자가 아니라면 다소 내용을 이해하는데 무리가 있을것 같기도 했다. 하지만 초급 수준의 C++에 대한 지식을 가지고 있더라고 꼭 한번 읽어 보기를 권해주고 싶다. 왜냐하면 이 책에서 다루고 있는 내용들은 C++에 대한 것들이지만 코딩 전반에 관한 것들도 많기 때문이다. 또한 각 주제에 대한 두리뭉실한 지식을 미리 알고 있는 것도 나중에 그러한 문제를 만났을때 해결책을 더 쉽게 찾을 수 있기 때문에 도움이 될 것 같다.
개인적으로 도움이 많이 됐던 부분은 $47 - $56까지 나오는 생성과 파괴 그리고 복사 부분과 $68 - $75까지 나오는 오류와 예외의 처리 부분에 관한 것이었다. 두 부분다 오랜 시간 C++을 쓰면서도 별로 명확하게 생각하지 않고 있었던 문제에 대해서 정확하게 집어주고 있었다.
이 책의 번역은 별로 흠 잡을 곳도 없었지만, 그렇다고 S급 번역은 아니었다. 몇몇 이상한 부분이 눈에 띄었는데 오해의 소지가 클 만한 부분과 이해가 잘 안될법한 부분으로 아래와 같은 문장이 있었다.
p50. 데이터 멤버를 public으로 선언하는 것이
=> 위 문장에서 public은 아무래도 오타인 것 같다. 문맥상 private이나 protected가 나와야 한다. $11은 정보 보호에 관해서 이야기 하는데 거기서 public이 정보 숨김의 대표적인 예라는 것은 이상하다. C++에 익숙하지 않은 개발자가 본다면 오해하기 쉬운 부분이다.
p224. 예를 들어 malloc이 작동하여 창이 만들어지고 스레드가 시작되었는지 확실히 하기 위해 assert를 사용하는 것은 좋은 방법이 아니다.
=> 위 문장은 번역이 잘못된 것 같다. 말 그대로 이해하려고 하면 백날 곱씹어도 이해할 수 없다. 원문은 아마도 malloc이 정상 동작하는지, 창이 제대로 만들어 졌는지, 스레드가 시작되었는지 등의 리턴 값을 체크하기 위해서 assert를 사용해서는 안된다. 정도가 될 것 같다. 분리된 문장을 역자가 한 문장으로 합치면서 이상해 진 것 같다.
번역을 떠난 책의 나머지 품질들은 만족할 만 했다. 표지와 알장, 편집 상태 모두 괜찮았다. 사실 한번에 읽고 모든 내용을 몸에 익히기에는 무리가 있다고 느껴진다. 책장에 꼽아두고 종종 생각날때 마다 익히면서 하나씩 습관이 되도록 만드는 것이 중요한 것 같다. 프로그래밍에 있어 좋은 습관을 가진다는 것은 곧 좋은 품질의 소프트웨어를 만들 수 있다는 것과 같은 의미를 가지기 때문이다.