«Clean Code. Second Edition» Роберта Мартина. Обзор

Первое издание этой книги вышло в 2008 году и произвело фурор в индустрии. Попытка дать четкие рекомендации «как пишется чистый код» неминуемо была испытана на прочность в разных контекстах, породив как холивары, так и вполне обоснованные замечания от комьюнити.
И вот спустя 17 лет и несколько других книг, Роберт Мартин решил выпустить новое издание.
Ключевые отличия коротко
Первое, что сразу бросается в глаза, — книга стала больше в 1,5 раза. Появились главы из ранее написанных книг этого автора. Видимо, чтобы новое поколение разработчиков могло охватить 80% идей из одного источника.
Второе: закапывание в Java-специфику уступило место примерам того, как одни и те же задачи решаются на других языках: Go, Python, JavaScript, Clojure. Но нет, Роберт Мартин не сдался на милось фронтендерам, как сделал Мартин Фаулер в переиздании «Рефакторинга». Также эта книга даже не пытается заменить собой более специфичную литературу по идиоматичному написанию кода на других языках. Такие примеры здесь в очень ограниченном количестве.
И самое важное изменение: автор местами всё-таки воспринял конструктивную критику первого издания.
«The only way to go fast is to go well»
Начинается книга с большой и пафосной телеги «почему именно чистый код ведёт к успеху»: что под этим подразумевается, почему он увеличивает продуктивность. Автор разбирает типичные возражения на этот счёт.
Лично меня порадовала, наконец-то явно проговоренная мысль о том, что не надо доходить в этой чистке до фанатизма. Мне очень понравилась метафора: «чистый код, как чистый дом, но в котором всё-таки живут люди: он не лишён крошек на полу и не идеально разложенных подушек, но это всё не делает дом непригодным для жизни». Кажется, этот пассаж должен, наконец-то, охладить горячие головы.
Непосредственно код
Именно в этой части книги вы найдете всем известные советы о именовании, функциях, классах из первого издания, но тут они пересобраны для более плотной подачи. Сюда же попала глава про дисциплину тестирования. Вообще, Роберт Мартин постоянно по ходу книги говорит о важности дисциплины в разработке.
Стало меньше акцента на несбыточных радикальных идеях, больше — про важность учёта мнения ваших коллег и цену, которую придётся заплатить, применяя некоторые из подходов. В общем, больше анализа для тех, кто и не пытался его проводить, а искал в книге простые решения сложных проблем.
Из совсем новенького: автор делится своим опытом по написанию кода с помощью современных инструментов: IDE и LLM.
Поднимаемся на уровень выше
Далее начинаются главы, которых не было в оригинале: они пришли из следующей его книги «Clean Architecture».
Часть про дизайн содержит очередную попытку объяснить SOLID и его расширение на уровень компонентов. Как дизайн компонентов влияет на возможность поспевать за хотелками бизнеса. Почему краткость в коде не всегда равна понятности.
В части про архитектуру мы поднимаемся на уровень целого приложения: систему из компонентов. Предлагаются принципы, которые помогают уже на глобальном уровне. Автор раскрывает ценность поведения и структуры приложения, что из этого важнее. Ну и, конечно, куда без повтора про архитектурные границы и ту известную схемку с кружочками.
В общем, эти две части сочетают как новые идеи, так и выжимку из «Clean Architecture», что не отменяет необходимости чтения полной версии оригинала.
Про дисциплину и этику
В конце основной части книги появились главы из его книги «Clean Craftsmanship: Disciplines, Standards, and Ethics», выпущенной в 2021 году.
Эта книга прошла мимо меня, и я догадываюсь почему: она ещё более философская, чем все предыдущие. В ней нет кода, но есть рассказ об истории развития программирования как профессии, о вызовах, которые стоят перед нами — профессиональными разработчиками. Тут много слов о необходимости быть дисциплинированными и уметь так же бороться за поддержание порядка в коде, как люди из бизнеса борются за фичи и сроки.
Бонус-трек
Я не очень понял, зачем, но в самом конце книги добавлена транскрипция дебатов Роберта Мартина с Джоном Аустерхаутом (John Ousterhout), автором «A Philosophy of Software Design». Видимо, автора они настолько впечатлили, что именно они привели к появлению второго издания 😄
Итого
Книга оставила приятное впечатление. Она не потеряла накопленной мудрости, местами стала более понятной и более взвешенной, что особенно важно в условиях бурного роста числа программистов. Ну и, конечно, приросла новыми идеями, чтобы более полно учесть современные реалии, в которых мы пишем софт. Важно только помнить: знакомство с чужими идеями не делает из вас эксперта, но и «те, кто забывает уроки истории, обречены на их повторение».
Где прочитать эту книгу
Эта книга вышла в октябре 2025 года и вряд ли будет переведена в ближайшее время на русский язык. Да и в целом, я не рекомендую читать переводы технической литературы. Я прочитал её в оригинале на сайте издательства OReily, благо там можно получить доступ ко всей их библиотеке на 10 дней, если вы в принципе сможете этот сайт открыть 😄 Этого срока вполне хватает, если читать каждый день хотя бы по паре часов.