У меня есть следующий класс:Как статический словарь имеет циклическую сложность?
public static class MyClass
{
private static readonly Dictionary<Type, Func<string, object>> valueTypes;
static MyClass()
{
var dictionary = new Dictionary<Type, Func<string, object>>();
dictionary.Add(typeof(bool), x => bool.Parse(x));
dictionary.Add(typeof(byte), x => byte.Parse(x));
dictionary.Add(typeof(char), x => char.Parse(x));
dictionary.Add(typeof(decimal), x => decimal.Parse(x));
dictionary.Add(typeof(double), x => double.Parse(x));
dictionary.Add(typeof(float), x => float.Parse(x));
dictionary.Add(typeof(int), x => int.Parse(x));
dictionary.Add(typeof(long), x => long.Parse(x));
dictionary.Add(typeof(sbyte), x => sbyte.Parse(x));
dictionary.Add(typeof(short), x => short.Parse(x));
dictionary.Add(typeof(uint), x => uint.Parse(x));
dictionary.Add(typeof(ulong), x => ulong.Parse(x));
dictionary.Add(typeof(ushort), x => ushort.Parse(x));
MyClass.valueTypes = dictionary;
}
}
Однако Microsoft Code Analysis флаги это как имеющие цикломатическую сложность 27. Я не понимаю, почему серия Добавить звонки с делегатами результатов в такой высокой степени сложности цикломатической.
Что я могу сделать, чтобы уменьшить цикломатическую сложность?
См http://stackoverflow.com/questions/10244131/how-can-the-cyclomatic-complexity-be -27-in-a-method-with-13-event-handler-subscr – cm007
Лямбда-выражения похожи на айсберг. Синтаксический сахар очень сладкий, но этот код создает 13 вложенных классов и 26 условных ветвей в коде конструктора. Единственный способ увидеть это - посмотреть на то, как работает инструмент анализа, запустить ildasm.exe на сборке. –