javascript

Невидимый Технический Долг: Управление TODO Комментариями

  • пятница, 25 октября 2024 г. в 00:00:05
https://habr.com/ru/articles/853132/

В разработке ПО важно обеспечивать чистоту и качество кода, чтобы проект оставался легко поддерживаемым.

Однако в ежедневной работе разработчики часто сталкиваются с необходимостью быстро решить задачу, и тогда они начинают оставлять в коде комментарии типа TODO или FIXME для последующего улучшения.

Спустя какое-то время проект оказывается перегружен невыполненными задачами. Подобные комментарии накапливаются и превращаются в невидимый технический долг, который может негативно сказаться на проекте.

Проблема TODO Комментариев

Изначально подобные комментарии служат напоминанием о местах, требующих доработки или рефакторинга. Например, это может быть необходимость оптимизировать алгоритм, исправить временное решение, улучшить читаемость кода или заменить устаревший API. Однако в условиях сжатых сроков и приоритетов больше внимания получают «реальные» задачи в Jira, Trello или GitHub Issues.

TODO комментарии могут лежать в исходном коде годами. Со временем на них и вовсе перестают обращать внимание, часто из-за смены приоритетов или изменений в составе команды.

Но каждый такой комментарий — долг, который нужно выполнить. Чем больше долгов, тем сложнее контролировать технический долг.

Итак, какие проблемы имеют TODO комментарии:

  • Невидимый технический долг: Накопление TODO комментариев создает иллюзию, что кодовая база в порядке, хотя на самом деле в ней скрыты потенциальные проблемы.

  • Ухудшение качества кода: Нерешённые задачи приводят к появлению багов и сложности в поддержке.

  • Потеря контекста: Со временем разработчики могут забыть, что именно требовало доработки, особенно если команда меняется.

Что с этим Можно Сделать?

Технический долг — практически неизбежная часть процесса разработки, но важно уметь им управлять, чтобы он не превратился в серьёзное препятствие. Для этого можно проводить ревизию комментариев в ходе код-ревью, интегрировать задачи из TODO комментариев в систему управления проектом и регулярно пересматривать приоритеты.

Регулярный рефакторинг, осознанное отношение к TODO комментариям помогают поддерживать кодовую базу в здоровом состоянии.

Для анализа этой проблемы я написал утилиту Todoctor, которая помогает изучать долги и контролировать их накопление.

Как Работает Todoctor?

Todoctor — это CLI утилита, которая занимается обработкой и анализом TODO комментариев в JavaScript и TypeScript коде, изучает историю появления этих комментариев и формирует отчёт в виде HTML.

На основании собранной информации Todoctor рисует график, как изменилось количество TODO комментариев за N месяцев.

График роста TODO комментариев на проекте
График роста TODO комментариев на проекте

Такая визуализация мотивирует команду к действиям, предоставляя конкретные метрики и позволяя отслеживать прогресс в уменьшении технического долга.

Кроме этого также предоставляется дополнительная информация:

  • возраст самого старого TODO комментария

  • их количество

  • средний возраст TODO комментариев

  • имя автора наибольшего числа подобных комментариев

Дополнительная информация, которую выводит Todoctor
Дополнительная информация, которую выводит Todoctor

А также сортируемый список TODO комментариев в вашем проекте:

Список TODO комментариев
Список TODO комментариев

Для того, чтобы использовать этот инструмент у себя в проекте, достаточно выполнить в корне проекта команду:

npx todoctor

И спустя какое-то время вы получите сгенерированный отчёт по вашему проекту.

Заключение

Технический долг может казаться незначительной проблемой, пока он не начинает замедлять разработку и ухудшать качество продукта. TODO комментарии часто упускаются из виду, но, как и любой долги, рано или поздно их придётся погашать.

Todoctor