Из 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)