Книга С. Макконнелла «Совершенный код»

complete_bookНаконец-то, дочитал книгу Макконнелла «Совершенный код», о который слышал много лестных отзывов. Честно говоря, особого восторга она у меня не вызвала, хотя подобную книгу должен прочитать каждый программист, и чем раньше, тем лучше. Но давайте обо всем по порядку.

В этой книге Макконнелл охватывает весь процесс разработки программного обеспечения, включая, проектирование софта, непосредственно написание кода, отладку программы, оптимизацию, взаимодействие с начальством, заказчиком и коллегами и даже есть глава про личные качества программистов. Цель этой книги — помочь писать такой код, который бы поняли другие программисты, которые после вас в нем будут разбираться.

Самыми полезными мне показались главы про непосредственно написание кода, где автор описывает общие принципы, как надо и как не надо писать код: почему вредны длинные функции, большая вложенность циклов и других управляющих конструкций, почему надо избегать оператора goto (хотя в некоторых редких случаях Макконнелл оправдывает его применение). Здесь не будет никаких особенных откровений, во многих книгах это уже описывалось (кстати, библиография, приводимая в конце книги, очень обширная — целых 43 страницы), но часто это было обрывочно, а в «Совершенном коде» все собрано в одном месте.

В свое время, когда я только изучал C++ и читал все подряд книги на эту тему, мне попадалась небольшая книжонка (около 200 страниц) Алена Голуба «C++. Веревка достаточной длины, чтобы выстрелить себе в ногу. Правила программирования на C и C++», тогда она на меня произвела очень благотворное влияние. Сейчас я ее уже плохо помню (надо бы ее перечитать), но мне кажется, что главы «Совершенного кода», посвященные стилю кодирования написаны не хуже. Но надо учесть, что книга Голуба посвящена непосредственно C/C++, а Макконнелл описывает правила программирования в общем, применительно к разным языкам (хотя примеры в основном попадаются на C++, Java и Visual Basic).

Отдельная глава в «Совершенном коде» посвящена стилю программирования и написанию комментариев. Приводятся различные способы расстановки фигурных скобок в C/C++/Java или аналогичных операторов begin/end и стили комментирования и описанием их плюсов и недостатков.

Еще одна глава посвящена оптимизации программ, но она оказалась какой-то слишком общей. Здесь приводятся некоторые приемы, которые могут ускорить (или не ускорить) выполнение программы, но в целом главу можно свести к нескольким тезисам: 1. Преждевременная отладка — зло; 2. Прежде, чем оптимизировать, надо прогнать программу через профайлер, чтобы убедиться, где именно программа тормозит (интуиция здесь не помощник); 3. Надо пробовать разные способы оптимизации, потому что заранее не известно, сработает конкретная оптимизация или нет, ведь компиляторы часто умнее программистов и сами неплохо оптимизируют программу.

Несколько глав посвящено организации работы программистов — почему и как нужно проводить тестирование и инспекции кода, что такое парное программирования, какие бывают методики проектирования и разработки софта (начиная с низкоуровневых классов, или наоборот с высокоуровневых интерфейсов), но ни одной методике не отдается предпочтения — они просто перечисляются.

Несмотря на то, что книга получилась довольно объемной (чуть меньше 900 страниц), некоторые из них все-равно получились несколько поверхностные, часто автор просто коротко пересказывает другие книги или результаты исследований. Мне особенно это бросилось в глаза в главе про рефакторинг, где Макконнелл просто перечисляет различные «запахи» (недостатки) кода и способы рефакторинга, отсылая за более подробным описанием к классике — к книге Фаулера «Рефакторинг. Улучшение существующего кода».

В целом книга полезная, особенно для начинающих, а вот профи вряд ли найдут здесь что-то новое. Хотя в книге есть множество ссылок на другие книги и статьи (некоторые из них относятся еще к 70-80-м годам прошлого века), которые было бы интересно прочитать, жаль только, что у нас они вряд ли переводились.

PS. Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.

Пожалуйста, оцените запись

УжасноПлохоТак себеХорошоОтлично (Количество голосов: 9, средняя оценка: 4,33)
Загрузка...

комментария 2

  1. Electriq:

    У меня этот Том стоит, кажется, с мартовского дня рождения, и его толщина действует на меня пугающе 🙂
    Что по делу, то мне кажется, что тексты про «запахи» и средства борьбы полезно время от времени перечитывать. Более того, есть книги, которые читать слишком рано может быть даже не так полезно. Вот «Банду четырех» я перечитал полностью сравнительно недавно, обладая уже неким опытом. Моя прежняя попытка прочесть эту книгу курсе на втором успехом не увенчалась… 🙂
    Кстати, только что из Дома книги — обнаружил новую книжку Роберта Мартина «Идеальный программист». Даже написано (C) 2012. Мартин — это который написал «Чистый код». Пришлось купить 🙂

  2. ттд:

    Несмотря на ее недостатки и большой объем, считаю, что эту книгу должен внимательно прочесть каждый программист-профессионал.

Leave a comment

Subscribe without commenting