clean code 2nd edition cover

Первое издание этой книги вышло в 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 дней, если вы в принципе сможете этот сайт открыть 😄 Этого срока вполне хватает, если читать каждый день хотя бы по паре часов.