Get Mystery Box with random crypto!

​Как выбрать, что рефакторить - ч.2 анализируем код Представ | Менеджер от боженьки

Как выбрать, что рефакторить - ч.2 анализируем код

Представьте, что ваш стартап пережил фазу бурного роста и СТО решил, что пора побить монолит на сервисы поменьше. Сделал классную презу, заручился поддержкой СПО и тимлидов и получил зеленый свет. С чего начать такой проект? Какой сервис взять в работу первым? Где наибольшая ценность от рефакторинга?

Один из вариантов - посмотреть на техдог с точки зрения файлов. Все наше приложение состоит из файлов, в которых хранятся экраны, API, интеграции и конфигурации. Чем больше фич, тем больше кода и тем больше файлов. В небольшом приложении по занятию йогой может быть, скажем, 300 файлов.

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

Сложность - это объем логики принятия решений в функциях исходного кода. Ее можно узнать, подключив сервисы вроде CodeScense или SonarQube. И хотя существуют различные способы, как ее подсчитать, самый популярный из них - цикломатическую сложность - придумали еще в 70-х и используют до сих пор.

Когда программисты пишут новую фичу и задействуют в ней файлы с низкой сложностью, это не вызывает у них раздражения. Короткие файлы легко читать и изменять, в них не запутаешься. Но когда в файле уже больше 300 строк, добавить 5 новых и ничего не сломать уже проблематично. Раздражать программистов мы не хотим, поэтому нас интересуют файлы с высокой сложностью.

Окей, допустим, таких файлов 100 из 300. Но мы же не будем с ходу переписывать 30% проекта. Какие из них прям самые невыносимые?

Здесь мы смотрим на второй параметр - изменяемость. Она показывает, как часто программисты вносят изменения в файлы, когда пишут новые фичи или исправляют баги.

Функционал вроде Настроек, Логаута, Смены пароль, меняются редко. Даже если в нем высокая сложность, его обслуживание стоит недорого. А раз так, то и снижать эту стоимость нет смысла. Про такой код говорят “Работает - не трогай”.

И наоборот, в фиче Урок Йоги продакт постоянно ставит новые эксперименты. Если в ней высокая complexity, то с каждым юзкейсом программистам все труднее и труднее писать новый код и менять растущие в объеме файлы. Это выливается в растущие оценки и долгий поиск багов.

Такие фичи стоит приоритезировать для рефакторинга в первую очередь.

————————

Недавно на работе мы думали, как определить самую важную часть скоупа для технического проекта длиной в несколько лет. Попробовали описанную технику (нашли ее здесь) и результат нас удовлетворил. Оказалось, что найденные файлы совпали с тем, что программисты субъективно назвали самой важной частью проекта. А это хороший знак.