Мы продолжаем знакомить читателя с базовыми понятиями программной инженерии. Сегодня поговорим про цикломатическую сложность (cyclomatic complexity).
Если коротко, то это метрика оценки сложности программы разработанная в 1976 году Томасом МакКейбом (Thomas J. McCabe).
По сути, цикломатическая сложность (ЦС) части программного кода — количество линейно независимых маршрутов через программный код. Если выражать формулой, то параметр может быть представлен следующим образом:
M = E − N + 2P,где:
M — цикломатическая сложность (ЦС),E — количество рёбер в графе,N — количество узлов в графе,P — количество компонент связности.А чем же это всё может быть полезно?
1. Избыточные значения ЦС указывают на переусложненные участки вашего кода.
2. Комплексное отслеживание ЦС спасает вас от влетания на рефакторинг (внезапно!). 📈
3. Излишне высокие значения ЦС намекают на сложности сопровождения программы.
О пороговых значениях Цикломатической сложности и её отличиях от Когнитивной будем писать в следующих постах. А пока простая задачка, как вы думаете, какая ЦС у кода ниже?
void foo(void)
{
if (a)
if (b)
x=1;
else
x=2;
}