Книга

«Чистый дизайн. Практика эмпирического проектирования ПО», Кент Бек

КнигаЧистый дизайн. Практика эмпирического проектирования ПОКент Бек

Обложка книги «Чистый дизайн» Кента Бека

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

«Хороший» код — вообще штука очень неоднозначная. Есть некоторые общепринятые правила и нормы, а дальше начинается система уровня «Легенды и мифы Древней Греции» — каждый верит в свой пантеон убеждений.

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

О чем книга

Книга представляет собой методичку с концентрированным опытом Бека в области очистки кода. Он приводит примеры «грязи» в коде и рассказывает, как и зачем их удалять в весьма прагматичном стиле.

В книге раскрываются следующие темы:

  • 15 «маленьких пушистых» рефакторингов по улучшению кода.
  • Как выбрать подходящий момент для очистки кода.
  • Взгляд на очистку кода через призму финансов и ценности для бизнеса.

3 идеи из книги

  1. Очистка помогает перенести в код понимание, полученное с трудом. Больше всего времени в разработке занимает не написание кода, а его чтение. В процессе чтения мы накапливаем понимание, поэтому будет весьма выгодно потратить немного времени, чтобы зафиксировать свой труд — перенести это понимание в листинги проекта.

  2. Иногда для проведения хорошей очистки нужно сначала свалить всё в кучу. Есть такой антипаттерн — дробление кода на излишне мелкие части (это еще Мартин в «Чистом коде» пропагандировал, кстати). Так вот, иногда подобные осколки кода нормально порефакторить просто невозможно, потому что понимание в голове не складывается. В таком случае можно просто заново собрать их в одну кучу, понять и переделать нормально.

  3. Программистам платят не только за реализацию текущего поведения, но и за те возможности, которые открываются дальше. Вспомните свою работу: фичи едут «паровозиком», одна за другой, опираясь на предыдущие реализации. Так вот, программный дизайн дает возможность проще и быстрее менять поведение системы в будущем, что ускоряет поставку новых фич.

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

Эта книжка (я бы ее скорее методичкой назвал) — маленький, но крайне интересный концентрат взглядов Кента Бека на программный дизайн. При этом автор явно лишен перфекционизма и смотрит на мир шире: например, он аргументированно показывает, что вкладываться в защиту от багов может быть невыгодно с точки зрения как разработки, так и бизнеса.

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

Считаю эту небольшую книжечку обязательной к прочтению всем инженерам. Затрат мало, профита много.