Задать вопрос
Am-glitch
@Am-glitch
I don kno how it works, but I'll find out

На какие метрики опираться при проведении рефакторинга?

Пишу отчет по практике, которую прохожу в унике, делаем проект на React и нужно написать про пункт "Рефакторинг и внесение исправлений/улучшений".
Я могу в принципе написать, как я там отрефачил код, но по факту я не знаю, как показать результат рефакторинга адекватно, чтобы не быть голословным. Какие метрики я могу стащить с гита и в целом на что я могу обратить внимание, чтобы сделать так сказать срез того, что было и того, что стало после?
  • Вопрос задан
  • 164 просмотра
Подписаться 1 Простой 11 комментариев
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Веб-разработчик Базовый
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Web-разработчик + ИИ
    8 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@Dhwtj
Из git (объективное, но только если проект долго живёт уже):
- частота изменений файлов (git log по путям) - находишь проблемные, показываешь что рефакторил именно их
- размер коммитов до/после, размер diff на фичу
- churn: сколько строк переписывалось в файле за период
- среднее число файлов, затронутых одной фичей (после хорошего рефакторинга должно падать)
- bus factor по файлам (кто трогал, если только один то никто больше не разберётся)

Технические метрики (срез до/после):
- LOC и размер компонентов (огромные компоненты разбиты)
- цикломатическая сложность (eslint-plugin-complexity / SonarQube / IDE)
- дублирование (jscpd показывает % copy-paste)
- кол-во props у компонентов, глубина вложенности JSX
- покрытие тестами (jest --coverage)
- bundle size (source-map-explorer, webpack-bundle-analyzer) - но это скорее уже оптимизация, а не рефакторинг
- кол-во ESLint/TS ошибок и any

React-специфика рефакторинга (тут не поручусь, спросил в LLM):
- вынос логики в кастомные хуки
- разделение умных/глупых компонентов
- убрал prop drilling -> context/состояние
- мемоизация где реально нужна
- типизация (JS -> TS, убраны any)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы