«Чистый дизайн. Практика эмпирического проектирования ПО», Кент Бек
Несмотря на то, что с кодом я в последнее время работаю откровенно мало (больше в контейнерах ковыряюсь), я всё равно остаюсь инженером. А это означает любовь к разным технологиям, языкам программирования, хорошему коду и тому подобным вещам.
«Хороший» код — вообще штука очень неоднозначная. Есть некоторые общепринятые правила и нормы, а дальше начинается система уровня «Легенды и мифы Древней Греции» — каждый верит в свой пантеон убеждений.
Мне всегда доставляло удовольствие эти убеждения изучать и разбирать: в IT работают умные люди, у которых много умных идей, и зачастую убеждения человека на чем-то основаны (кроме «Чистой архитектуры» — это прям вольные фантазии теоретика ПО). С целью разбора таких подходов я и взял почитать книжку Кента Бека — ветерана разработки ПО, приложившего руку к ряду важных вещей в индустрии.
⭐️ О чем книга
Книга представляет собой методичку с концентрированным опытом Бека в области очистки кода. Он приводит примеры «грязи» в коде и рассказывает, как и зачем их удалять в весьма прагматичном стиле.
В книге раскрываются следующие темы: ➡️ 15 «маленьких пушистых» рефакторингов по улучшению кода. ➡️ Как выбрать подходящий момент для очистки кода. ➡️ Взгляд на очистку кода через призму финансов и ценности для бизнеса.
⭐️ 3 идеи из книги 🟡Очистка помогает перенести в код понимание, полученное с трудом. Больше всего времени в разработке занимает не написание кода, а его чтение. В процессе чтения мы накапливаем понимание, поэтому будет весьма выгодно потратить немного времени, чтобы зафиксировать свой труд — перенести это понимание в листинги проекта.
🟡Иногда для проведения хорошей очистки нужно сначала свалить всё в кучу. Есть такой антипаттерн — дробление кода на излишне мелкие части (это еще Мартин в «Чистом коде» пропагандировал, кстати). Так вот, иногда подобные осколки кода нормально порефакторить просто невозможно, потому что понимание в голове не складывается. В таком случае можно просто заново собрать их в одну кучу, понять и переделать нормально.
🟡Программистам платят не только за реализацию текущего поведения, но и за те возможности, которые открываются дальше. Вспомните свою работу: фичи едут «паровозиком», одна за другой, опираясь на предыдущие реализации. Так вот, программный дизайн дает возможность проще и быстрее менять поведение системы в будущем, что ускоряет поставку новых фич.
⭐️ Мои впечатления
Эта книжка (я бы ее скорее методичкой назвал) — маленький, но крайне интересный концентрат взглядов Кента Бека на программный дизайн. При этом автор явно лишен перфекционизма и смотрит на мир шире: например, он аргументированно показывает, что вкладываться в защиту от багов может быть невыгодно с точки зрения как разработки, так и бизнеса.
Несмотря на небольшой объем, книга дает много классных рекомендаций, которые можно применить на практике. Но основной посыл заключается в том, что очистка кода и поддержание его в порядке — это постоянный процесс. Если с рефакторингами обычно всё сложно (впихнуть техдолг между фичами — всегда нетривиальная задача), то очистку можно и нужно делать постоянно.
Считаю эту небольшую книжечку обязательной к прочтению всем инженерам. Затрат мало, профита много.
Все мои обзоры книг доступны по тегу #обзор_книги и в этом посте.
А для тех, кто хочет читать с большей пользой, у меня есть статья с описанием моего процесса чтения и упражнениями.
➖➖➖➖➖➖➖➖➖➖➖ 📝 @ulshinblog 💬 Бэкап канала в Max
В этом посте были ссылки, но мы их удалили по правилам Сетки