2010-02-02 2 views
4

На работе мы рассматриваем общие проблемы, которые приводят к высокой циклической сложности. Например, наличие большого оператора if-else может привести к высокой циклической сложности, но может быть разрешено путем замены условностей на полиморфизм. Какие еще примеры вы нашли?Общие причины цикломатической сложности и их решения

+0

Любой конструкция, которая имеет ветвление поведения увеличивает цикломатическую сложность –

+0

http://en.wikipedia.org/wiki/Cyclomatic_complexity: –

+0

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

ответ

5

См. NDepend's definition of Cyclomatic Complexity.

Nesting Depth также является отличным кодом.

Cyclomatic complex - это популярная процедурная метрика программного обеспечения, равная количеству решений, которые могут быть приняты в процедуре. Конкретно, в C# CC метода 1 + {количество следующих выражений, найденных в теле метода}:

if | а | для | foreach | случай | default | продолжить | Перейти | & & | || | улов | тернарный оператор?: | ??

Эти выражения не учитываются для расчета CC:

еще | сделать | переключатель | попробуйте | использование | бросить | наконец | вернуться | создание объектов | вызов метода | доступ к полю

Этот показатель, адаптированный к миру OO, определяется как методами, так и классами/структурами (как сумма его методов CC). Обратите внимание, что CC анонимного метода не учитывается при вычислении CC его внешнего метода.

Рекомендации: Методы, в которых CC выше 15, трудно понять и поддерживать. Методы, в которых CC выше 30, являются чрезвычайно сложными и должны быть разделены меньшими методами (за исключением случаев, когда они автоматически генерируются инструментом).

+0

Приятно вам добавить, как он вычисляется. –

1

Другой пример, чтобы избежать использования так много случаев, это реализация машины конечного состояния. Поскольку события перегоняют переходы, поэтому условные выражения более ясны с этими переходами, которые изменяют состояние Системы. Контроль проще.

Оставьте вам ссылку, где упоминаются некоторыми подмигнули преимущества:

http://www.skorks.com/2011/09/why-developers-never-use-state-machines/

Смежные вопросы