Сложность кода
Количественная мера того, насколько сложно понять, протестировать и поддерживать код, основанная на факторах ветвления, глубины вложенности и зависимостей.
Определение
Сложность кода измеряется различными метриками: Cyclomatic Complexity (количество независимых путей), Cognitive Complexity (мера понятности от Sonar), метрики Halstead (на основе операторов и операндов), Lines of Code. Высокая сложность коррелирует с высоким уровнем дефектов и длительным временем разработки. Инструменты SonarQube, ESLint, diffray измеряют и отмечают сложный код.
Почему это важно
Исследования показывают, что функции с цикломатической сложностью >10 имеют в 4 раза больше багов. Сложный код труден для тестирования (требует больше тест-кейсов), ревью (легко пропустить проблемы) и модификации (высокий риск регрессии).
Пример
Функция с 15 if/else ветками, 4 вложенными циклами и 3 try/catch блоками имеет высокую сложность. Рефакторинг в меньшие, сфокусированные функции с чёткими ответственностями снижает сложность.