❓Как искать архитектурный долг не по ощущениям, а по данным?
Об этом был мой доклад на фестивале IT Weekend в IT-Куб.Норильск: «Архитектурный долг: как найти зоны высокой связности и перестать платить “проценты”».
Главная мысль: техдолг почти всегда сначала ощущается, а уже потом формулируется.
Фича на день превращается в неделю. Маленькая правка тянет изменения в десяти файлах. Команда говорит: «это место лучше не трогать».
И «тут всё сложно» — слабый аргумент. Чтобы обсуждать архитектурный долг нормально, нужны данные и метрики.
💡И внезапно у вас всегда есть история Git.
Что можно из коммитов достать:
• hotspots — файлы, которые меняются чаще всего; • churn — объём изменений за период; • temporal coupling — файлы, которые регулярно меняются вместе; • скрытые зависимости, которых нет в imports, но которые видны по истории изменений; • классы, которые становятся слишком «дружелюбными» ко всем классам и начинают нарушать SRP.
Это Behavioural Code Analysis: мы смотрим не только на текущий код, а на поведение системы во времени. Каждый из этих показателей — только отправная точка для анализа.
Hotspot не означает сразу «плохой файл». Он означает: через это место проходит много изменений и тут появляются риски, а возможно и баги.
Temporal coupling особенно полезен: если два файла постоянно меняются вместе, значит между ними есть причина связи. Даже если формально они никак не зависят друг от друга.
В докладе показывал, как искать такие зоны через git log и утилиту code-maat. Но сначала все эти данные нужно как-то разобрать — и тут в комнату заходит...
Конечно, AI, куда же без него. AI-Агент проверит все подозрительные точки в коде, соберёт отчёт по Git-истории, churn, hotspots и temporal coupling. И вам не надо ревьювить большой объём сигналов. На самом деле со скиллом (он есть в материалах – весь цикл можно отдать ИИ)
С этим уже можно идти к менеджерам не с фразой «мне кажется, надо порефакторить», а с конкретной проблемой и аргументами.
После этого кроме «кайфово переписать код» вы сможете сделать разработку дешевле и быстрее в будущем. С таких подходом и формирую архитектурный техдолг при работе с проектом.
📖 Презентация, пример скилла, а также дополнительные материалы в репозитории на гитхабе