понедельник, 28 сентября 2009 г.

[comp.prog.cpp.book] Книга “Скользкие места C++”

Общая информация:

Стефан К. Дьюхерст. Скользкие места C++. Как избежать проблем при проектировании и компиляции ваших программ. – М.: ДМК Пресс, 2006. – 264 с.: ил.

Английское название:

Stephen C. Dewhurst. C++ Gotchas. Awoiding Common Problems in Coding and Design, 2003.

Официальная аннотация:

Вы держите в руках руководство по тому, как не допускать и исправлять 99% типичных, разрушительных и просто любопытных ошибок при проектировании и реализации программ на языке C++. Эту книгу можно рассматривать также, как взгляд посвященного на нетривиальные особенности и приемы программирования на C++.

Обсуждаются как наиболее распространенные “ляпы”, имеющиеся почти в любой программе на C++, так и сложные ошибки в использовании синтаксиса, препроцессора, преобразований типов, инициализации, управления памятью и ресурсами, полиморфизма, а также при проектировании классов и иерархий. Все ошибки и их последствия обсуждаются в контексте. Подробно описываются способы разрешения указанных проблем.

Автор знакомит читателей с идиомами и паттернами проектирования, с помощью которых можно решать типовые задачи. Читатель так же узнает много нового о плохо понимаемых возможностях C++, которые применяются в продвинутых программах и проектах. На сайте http://www.semantics.org можно найти полный код примеров из книги.

В книге рассказывается, как миновать наиболее серьезные опасности, подстерегающие программиста на C++. Программисты найдут в ней практические рекомендации, которые позволят им стать настоящими экспертами.

Издание предназначено для всех программистов, желающих научиться писать правильные и корректно работающие программы на языке C++.

Что из себя представляет книга:

Книга является сборником из 99 советов, разбитых на 9 глав:

  • Глава 1. Основы (такие советы, как “Избыточное комментирование”, “Магические числа”, “Глобальные переменные” и т.д.)
  • Глава 2. Синтаксис (например, “Не путайте массивы с инициализаторами”, “Неопределенный порядок вычислений”, “Помните о предшествовании”,…)
  • Глава 3. Препроцессор (“Определение литералов с помощью #define” и др.)
  • Глава 4. Преобразования (“Преобразование посредством void*”, “Срезка” и др.)
  • Глава 5. Инициализация (“Не путайте инициализацию и присваивание”, “Правильно выбирайте область видимости переменной” и др.)
  • Глава 6. Управление памятью и ресурсами (“Различайте выделение и освобождение памяти для скаляров и для массивов”, “Контроль ошибок при выделении памяти” и др.)
  • Глава 7. Полиморфизм (“Кодирование типов”, “Невиртуальный деструктор базового класса” и др.)
  • Глава 8. Проектирование классов (“Интерфейсы get/set”, “Константные и ссылочные данные-члены” и др.)
  • Глава 9. Проектирование иерархий (“Массивы объектов классов”, “Не всегда один контейнер можно подставить вместо другого” и др.)

В каждом совете рассматривается конкретная проблема – формы ее проявления и последствия, даются рекомендацию по ее обходу и/или устранению.

Коротко об авторе книги:

Стефан К. Дьюхэрст был одним из первых пользователей языка C++ в компании Bell Labs. За его плечами более 18 лет опыта применения C++ к таким задачам, как проектирование компиляторов, торговля производными ценными бумагами, электронная коммерция и встраиваемые телекоммуникационные устройства. Он соавтор книги “Programming in C++” (Prentice Hall, 1995), автор-редактор в журнале “C/C++ Users Journal”. В прошлом он так же вел колонку в журнале “C++ Report”. Кроме того, Стив разработал два компилятора для языка C++ и написал многочисленные статьи о проектировании компиляторов и технике программирования на C++.

Мое впечатление:

Отличная книга. Точно из разряда must read для C++ программистов. В особенности, для начинающих программистов. Поскольку начинающие С++ники регулярно и неизбежно умудряются опробовать большинство этих проблем на собственном печальном опыте. Но и для опытных программистов в книге, я уверен, найдется достаточно нового.

Книга хороша именно тем, что в ней в одной собрано столько подводных камней C++. Пожалуй их все можно найти и в книгах других авторов (Страуструпа, Саттера, Александреску, Мейрса), но по всего по несколько штук у каждого из авторов, а здесь они сконцентрированы в одном месте.

Что не понравилось, так это отвратительное качество именно русского издания. Множество опечаток и ошибок в тексте. Даже на задней обложке написано: “Стефен К.Дьюхэрст были одним” – т.е. Стефен вместо Стефан и ‘были’ вместо ‘был’. Не удивительно, что в тексте ситуация не многим лучше.

Комментариев нет: