«Я делаю рефакторинг ежечасно» или как за пять минут улучшить приложение

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

История этой статьи началась с того, что я вспомнил о довольно известном высказывании Мартина Фаулера, автора книг и статей по архитектуре ПО, которое нередко вызывает недопонимание (во всяком случае так было у меня) — «Я делаю рефакторинг ежечасно». Первая мысль, которая логично возникает после этого высказывания — уважаемый публицист просто лукавит. Вторая — что, наверное, кроме рефакторинга он в своей жизни ничем больше не занимается. Но так ли это?

С вами в очередной раз Костя Логиновских, ведущий разработчик и технический лидер внутреннего проекта в Cloud.ru. В этой статье предлагаю во всем разобраться и обсудить, как можно делать рефакторинг «за пять минут» и улучшить приложение буквально за утренним кофе.

Спойлер: на самом дел рефакторинг ооочень мал
Спойлер: на самом дел рефакторинг ооочень мал

Чтобы устранить разночтения, сначала определим, что считать рефакторингом. Есть очень простое определение: вы рефакторите, если вы меняете код, но не меняете функциональность приложения.

Зачем менять код, если не меняется функциональность? Причин может быть много: совершенствование архитектуры (бизнес-требования меняются и иногда под них нужно подстраивать систему), желание найти ошибки, ускорить разработку или упростить чтение программы.

Некоторые из этих поинтов могут показаться спорными — например, что значит «улучшает читаемость»? Можно ли читаемость как-то измерить? Оказывается, можно!

Как измерить читаемость кода

Читаемость кода можно приравнять к «когнитивной сложности кода», которая включает нескольких аспектов:

  • использование редких конструкций — когда разработчику очень сложно вспомнить, как именно работают примененные конструкции кода (также известные как «ниндзя-код»);

  • использование «оперативной памяти программиста» — когда разработчика заставляют держать в голове конструкции, которые необходимы для понимания кода (например, когда название переменной не позволяет точно определить, что именно в ней находится);

  • цикломатическая сложность — математическое измерение читаемости кода, на котором я остановлюсь немного подробнее.

Если с первого раза удалось понять, что делает этот код — напишите в комментарии =)
Если с первого раза удалось понять, что делает этот код — напишите в комментарии =)

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

Как улучшить проект за чашкой кофе

Есть только один способ сделать что-либо быстрее — это сделать то, что нужно сделать, небольшим

Источник: https://habr.com/ru/companies/cloud_ru/articles/877762/


Интересные статьи

Интересные статьи

Управление большим числом изменяемых шаблонов бизнес-процессов — непростая задача. А необходимость поддержки актуальных версий шаблонов на нескольких копиях проекта добавляет еще больше сложностей. Де...
Год назад у Битрикс24 появилась нативная интеграция с BI-сервисом DataLens: теперь пользователи CRM могут строить дашборд с бизнес-аналитикой за несколько кликов. Для создания таких аналитических отчё...
Всё началось с того, как один мой друг пожаловался, что его телефон каждые несколько секунд выполняет запрос к одному и тому же приложению. Сначала я предположил, что телефон заражён вирусом, но через...
Пришло время традиционной ежемесячной подборки из «классических» и нетривиальных ИБ-инцидентов, о которых писали в СМИ. В майской программе удивляемся «сливу» длиною в десятилетие, взлому учетки сотру...
SWAP (своп) — это механизм виртуальной памяти, при котором часть данных из оперативной памяти (ОЗУ) перемещается на хранение на HDD (жёсткий диск), SSD (твёрдотельный накоп...