Несмотря на использование языка JavaScript, примеры кода легко поймёт разработчик, использующий Python, Kotlin, Java и другие C-подобные языки программирования. Если в примере используются конструкции, характерные только для JS, то их немного.
Упор делается непосредственно на структурирование, анализ кода и наименование функций. Автор затрагивает тему оптимизации, но в любом случае придерживается принципа - ваш код должен быть читаемым и понятным, а остальное наладится 🙂
Первая глава, как конфетка, демонстрирует все преимущества рефакторинга и разжигает желание читать дальше. В ней приводится пример неплохого кода, с адекватными наименованиями функций, переменных, и демонстрируется повышение его читаемости за счет шаблонов рефакторинга, которые автор применяет в своей практике. Если сравнить код в начале книги и в конце, то можно заметить, что кода стало немного больше, но он стал более читаемым, за счет формирования функций-оберток. Иными словами, для повышения читаемости используются функции, которые объединяют небольшие части кода и своим наименованием поясняют читателю, какую роль они выполняют. После рефакторинга структуры кода, автор упоминает также о необходимости смыслового разделения кода. И демонстрирует это путём разделения логики, отвечающей за расчеты, и отображения, формирующегося с помощью создания HTML-файла.
После этой вкусной главы, идут рассуждения и обоснования. Автор описывает принципы рефакторинга, и прибегает к метафоре “душок” или “запах”, называя так критерии, с помощью которых можно понять требует код определенных изменений или нет. “Запах” при этом не является чем-то строгим и однозначно узнаваемым в коде. Такая метафора дает понять, что применение рефакторинга всё-таки должно быть ситуативным и опираться на опыт разработчика.
Как пример, одним из “запахов” является наличие комментариев. Если они встречаются в вашем коде, стоит подумать, что будет, если вы уберете комментарии - поймете ли вы или другой разработчик, что делает ваш код? Какое количество строк в вашем коде занимают комментарии по отношению к самому коду и так ли они необходимы?
Далее, автор немного меняет подачу материала и мы попадаем в справочник и несколько последних глав посвящены каталогу приемов. Каждый прием каталога разделен на мотивацию (причину или “душок” по которому разработчик определяет необходимость рефакторинга), саму технику и пример (причем не только самого кода, но и визуальной схемы), а в некоторых случаях и дальнейшее чтение, т.е. ссылку на какую-либо книгу или главу книги “Рефакторинг кода на JS”.
Что понравилось:
+Книга очень наглядная и изобилует большим количеством схем, примеров кода до и после рефакторинга, пояснениями, ссылками на другие источники, инструменты, книги и даже людей, упоминая, в частности, Кента Бэка, обзор на одну из книг которого был у нас ранее.
+Книга очень удачная по структуре, ее можно читать подряд, можно использовать как справочник, особенно это касается каталога приемов в конце книги.
+В книге есть множество отсылок к полезной литературе, включая workbook по рефакторингу, где даются упражнения для отработки навыков применения принципов и шаблонов рефакторинга. (https://www.amazon.com/Refactoring-Workbook-William-C-Wake/dp/0321109295)
Что не понравилось:
-Как и в книге Кента Бэка, после прочтения появляются сомнения, достаточно ли у тебя релевантного опыта, чтобы интуиция подсказывала где в коде нужны изменения. Однако автор приводит достаточно конкретизированных примеров, что облегчает понимание и приводит к накоплению этого самого опыта.
В целом, книга 'Рефакторинг кода на JS' Мартина Фаулера может быть отличным ресурсом для желающих улучшить структуру и читаемость своего кода. Каждый пример или рекомендацию из книги можно применять в работе. Рекомендуем к прочтению!
Автор Александра Недомолкина - WEB-разработчик, Frontend-разработчик компании ООО '23 программиста' https://vk.com/id80140921