Цикломатическая сложность '267' лучше?

Я разработал приложение в.NET с использованием C#.

Используя опцию "Рассчитать метрики кода", я получил показатель цикломатической сложности "267" с 2348 строками кода и глубиной наследования = 7, сцеплением классов = 150 и индексом ремонтопригодности = 80.

Я знаю, чем ниже цикломатическая сложность, тем лучше. Хотя я не знаю остальных параметров, я хотел бы знать, лучше ли цикломатическая сложность 267 или нет?

1 ответ

Решение

Под цикломатической сложностью обычно понимается количество независимых путей в вашем коде. Это измеряется по следующей формуле в Visual Studio:

Complexity = Edges - Nodes + 1

Для любого данного метода 25 считается опасно высоким и приводит к возникновению ошибки в Visual Studio. В идеале вы хотите, чтобы цикломатическая сложность была как можно ниже. Попробуйте нацелиться на 3-4 и максимизировать на отметке 10.

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

Тем не менее, будьте осторожны с использованием этих типов метрик в качестве единственного индикатора состояния проекта. Без четкого вопроса или цели они могут ввести вас в заблуждение и потратить время или что-то еще хуже. Возможно, вам лучше сосредоточиться на другом показателе, таком как покрытие кода, прежде чем пытаться уменьшить цикломатическую сложность.

Вы можете прочитать больше о цикломатической сложности здесь:
http://msdn.microsoft.com/en-us/library/ms182212.aspx
https://en.wikipedia.org/wiki/Cyclomatic_complexity

Другие вопросы по тегам