пишем. Пишем, пишем, его всё больше и больше, а старое почти не удаляем. А когда удаляем то не ясно «а всё ли удалили» — Xcode никак не подсказывает, что где-то какие-то хвостики остались.
В итоге целая пачка проблем:
- Иногда при написании нового кода приходится что-то актуализировать в старом, а он может быть вообще нигде не используется и просто мертвым грузом лежит. Это мы время теряем.
- Иногда при подготовке кода к новым фичам что-то рефачим и случайно удаляем вызов важного метода. Это мы баги заносим.
- Постоянно билдим проект локально и на CI, и в том числе билдится и вот такой мертвый код. Это мы время теряем.
8 июня 2023, то есть год назад, я затащил в проект Додо Пиццы тулзу Periphery — она анализирует весь наш код и говорит «вот тут чет лишнее осталось и вот там кусок бесхозный стал». Её одобрение — одна из обязательных проверок на CI при влитии ПРов.
Я не знаю сколько нового мертвого кода она запретила вливать (хз как посчитать) и сколько багов предотвратила. Но у нас тут с мертвой точки сдвинулась война с брошенными фичатоглами и тулза сильно помогла при их выпиле. И продолжает помогать.
Сначала я скормил ей весь наш проект и она выдала мне около 3000 варнигов. Я понял, что устранить их за раз не вариант. Тогда я загнал все наши модули под карантин, а потом аккуратно раскарантинивал и устранял варнинги. Где-то месяца 2-3 назад я передал задачу другой разработчице, Маше, и где-то полтора месяца назад она закончила выносить все модули из карантина. Но это только первый этап был.
Вторым этапом стал тюнинг настроек Периферии: мы попросили ругаться ещё и на публичные проперти, если они не юзаются или если им нет необходимости быть публичными, так как никто снаружи их не юзает. Это дало нам ещё 3000 варнингов. Маша их устраняла последние полтора месяца.
В общем и целом спустя год мы закончили удалять бесполезный мертвый код и теперь его никак нельзя занести в проект.
Что это нам дало:
- Перестали тратить время на поддержание кода, который никогда не выполняется на проде.
- Сократили количество легаси. Вот прям сегодня после рефактора очередной кусок удалил по наводке периферии, потому что он перестал использоваться.
- Проект стал билдиться быстрее. Пруфов не будет.
- Ускорили и удешевили билды на CI.
Итог
С самого начала проекта мы считали количество строк кода по мере раскарантинивания проекта. Цифры такие:
Удалили: 27к
Добавили: 5к
Это много или мало? Давайте посмотрим на аналитику сонара:
Lines: 400к
Lines of Code: 250к
Получается мы удалили где-то 5-10% нашего приложения.
Что дальше
Можно подключить к периферии ещё и тесты — там много моков валяется бесполезных и хелперов лишних, на которые мы тож тратим время и силы.
затестил, топовая тулзовина
Обсуждают сегодня