4.0 Введение в часть 4: Метрики кода и качества
Части 2 и 3 измеряли, как движется работа и как поживают производящие её люди. Эта часть обращается к самому артефакту: коду, и к тому, что метрика может и не может сказать вам о его качестве. У метрик качества кода самая долгая история среди всех семейств метрик этой книги, цикломатическая сложность восходит к 1976 году, и соответствующая самая долгая история неправильного использования. Эта часть серьёзно относится к этой истории: каждая тема называет подлинно полезный сигнал наряду с конкретным хорошо задокументированным способом, которым этот сигнал подделывается, как только становится целью.
Сквозная линия, связывающая эти шесть тем, в том, что ни одна отдельная метрика кода не захватывает качество сама по себе, и несколько самых популярных активно вводят в заблуждение, когда преследуются изолированно. Высокий процент тестового покрытия может сосуществовать с тестами, не проверяющими ничего значимого. Низкая оценка сложности может сосуществовать с кодом, технически простым, но концептуально несвязным. Темы этой части каждая сочетает свою заглавную метрику с дополняющей проверкой, улавливающей её конкретное слепое пятно: сложность с контекстом сопровождаемости, покрытие с мутационным тестированием, объём изменений с анализом горячих точек, статический анализ с человеческим суждением и технический долг с приоритизированным устранением, а не вечно растущим нелюбимым бэклогом.
Для крупных команд метрики кода и качества это то, что делает возможным управление кодовой базой, слишком большой для того, чтобы её мог удержать в голове один человек. Команда из пяти человек может полагаться на общее неявное знание того, какие части системы хрупки; организация из пятисот инженеров, охватывающая десятки сервисов, нуждается в инструментированных сигналах, чтобы найти эту хрупкость систематически. Корпоративные и государственные организации, часто несущие кодовые базы, измеряемые десятилетиями, а не годами, полагаются на метрики этой части для приоритизации того, где ограниченная инвестиция в обслуживание принесёт больше всего пользы.
Темы этой части
- 4.1 Метрики сложности кода: Цикломатическая сложность и её родственники, что они на самом деле предсказывают, и их хорошо задокументированный риск манипулирования.
- 4.2 Тестовое покрытие и эффективность тестов: Почему один процент покрытия говорит вам меньше, чем кажется, и как мутационное тестирование закрывает этот пробел.
- 4.3 Объём изменений кода и анализ горячих точек: Нахождение конкретной небольшой доли кодовой базы, ответственной за непропорциональную долю дефектов и стоимости обслуживания.
- 4.4 Статический анализ и метрики запахов кода: Автоматизированные сигналы качества кода, их реальная ценность и их ограничения против человеческого суждения.
- 4.5 Измерение технического долга: Превращение невидимого неформально обсуждаемого обязательства в видимый приоритизированный управляемый портфель.
- 4.6 Метрики документации и знания: Измерение того, действительно ли документация помогает, а не просто существует ли она.
Как эти темы взаимосвязаны
Эти шесть тем строятся от самой маленькой единицы кода наружу. Тема 4.1 начинает на уровне единственной функции или метода; тема 4.2 спрашивает, действительно ли тесты проверяют поведение этой единицы; тема 4.3 отдаляется, чтобы найти, какие файлы и модули по всей кодовой базе заслуживают внимания в первую очередь; тема 4.4 добавляет слой автоматизированного инструментария, непрерывно сканирующего всё это; тема 4.5 превращает накопленные находки из всех четырёх в управляемый приоритизированный бэклог, а не рассеянное неадресованное беспокойство; а тема 4.6 закрывает эту часть, измеряя, действительно ли знание, необходимое для безопасного поддержания всего этого, документировано и находимо.
Эта часть напрямую связывается с метриками стабильности части 2: доля неудачных изменений (тема 2.10) в значительной степени является последующим следствием качества кода, которое эта часть измеряет выше по течению. Она также связывается вперёд с продуктовыми метриками части 5, поскольку вырвавшиеся дефекты (тема 5.1) часто прослеживаются именно до горячих точек сложности и пробелов покрытия, которые эта часть построена раскрывать до того, как они вообще достигнут продакшена.