На работе мы рассматриваем общие проблемы, которые приводят к высокой циклической сложности. Например, наличие большого оператора if-else может привести к высокой циклической сложности, но может быть разрешено путем замены условностей на полиморфизм. Какие еще примеры вы нашли?Общие причины цикломатической сложности и их решения
ответ
См. 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, являются чрезвычайно сложными и должны быть разделены меньшими методами (за исключением случаев, когда они автоматически генерируются инструментом).
Приятно вам добавить, как он вычисляется. –
Другой пример, чтобы избежать использования так много случаев, это реализация машины конечного состояния. Поскольку события перегоняют переходы, поэтому условные выражения более ясны с этими переходами, которые изменяют состояние Системы. Контроль проще.
Оставьте вам ссылку, где упоминаются некоторыми подмигнули преимущества:
http://www.skorks.com/2011/09/why-developers-never-use-state-machines/
- 1. Python: снижение цикломатической сложности
- 2. Получение цикломатической сложности
- 3. Снижения цикломатической сложности
- 4. Сокращение цикломатической сложности кода
- 5. Снижение цикломатической сложности метода Java
- 6. Расчета цикломатической сложности для псевдокода
- 7. Разъяснение ручной подсчет цикломатической сложности
- 8. ошибка сложности цикломатической в моем коде
- 9. Снижение цикломатической сложности, многократная, если заявления
- 10. Снижение цикломатической сложности, не затрагивая бизнес-логику
- 11. Как переопределить равные без увеличения цикломатической сложности?
- 12. Какова должна быть область цикломатической сложности для JAVA
- 13. Каковы общие причины взаимоблокировок?
- 14. Общие причины сбоя NSURLCONNECTION
- 15. RREF против LU решения сложности
- 16. Каковы причины и решения - [__ NSCFConstantString trim]?
- 17. SQL Dump Импорт ошибок Причины и решения
- 18. Выполнение настроек «общие для решения»
- 19. Требуется объяснение решения временной сложности алгоритма
- 20. Общие причины отсутствия текстур OpenGL
- 21. Общие причины сбоев операционной системы
- 22. Общие папки в корне решения
- 23. DFS - Реализация решения сложности времени O (| E |)
- 24. Специфическое для браузера поведение с% -размерными поплавками. Причины и решения?
- 25. Internet Explorer: ошибка «объект ожидаемого» - общие причины?
- 26. Как найти общие элементы в двух списках? Лучшее решение с точки зрения временной сложности и сложности пространства
- 27. ASP.NET Общие функции подготовки и их результаты
- 28. Общие сведения о строках и их значениях
- 29. как объединить общие списки и их свойства
- 30. Репликационные решения Postgresql и их производительность
Любой конструкция, которая имеет ветвление поведения увеличивает цикломатическую сложность –
http://en.wikipedia.org/wiki/Cyclomatic_complexity: –
Вы говорите «циклическую сложность», как будто это плохая вещь. Не лучше ли вы, посмотрев на то, что вызывает проблемы? –