Назад к словарю
Метрики и архитектура

Цикломатическая сложность

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

Определение

Разработанная Thomas McCabe в 1976, цикломатическая сложность считает количество линейно независимых путей через код. Вычисляется как: M = E - N + 2P (рёбра минус узлы плюс 2 умножить на связные компоненты). Каждый if, while, for, case, catch, &&, ||, тернарный оператор увеличивает сложность на 1. Обычно: 1-10 просто, 11-20 умеренно, 21-50 сложно, 50+ нетестируемо.

Почему это важно

Высокая цикломатическая сложность указывает на код, который трудно тестировать, понимать и поддерживать. Исследования показывают, что функции со сложностью выше 10 имеют значительно более высокий уровень дефектов.

Пример

Функция с 3 if-выражениями и циклом имеет цикломатическую сложность 5 (1 базовая + 3 if + 1 цикл). Это означает 5 различных путей через код, каждый требующий тест-кейса для полного покрытия.

Связанные термины

cyclomatic complexitywhat is cyclomatic complexityMcCabe complexitycode complexity

Автоматизируйте код-ревью с diffray

Мульти-агентная AI-система для код-ревью. Находит баги, уязвимости и проблемы архитектуры автоматически.