使用lambdas初始化列表会导致高IL圈复杂度:为什么以及如何消除这种复杂性? 例如,下面的代码导致类的静态构造函数(实际上是编译器生成的)非常复杂:1 +列表计数。
static List<Predicate<string>> list = new List<Predicate<string>>()
{
s => s == null,
s=> s.StartsWith(“R”),
... With a lot of predicates like that ….
};
注意:复杂性是使用NDepend
答案 0 :(得分:2)
为什么呢?因为ILCC被定义为不同跳转/分支目的地的数量。您正在初始化的列表包含很多if / then逻辑,包含在lambdas中。我认为语言依赖的CC较低?
高cyclomatic complexity只是提示,您的功能过于复杂,因此难以理解,维护和测试。在这种情况下,该提示是否正确将取决于您如何使用该谓词列表。但这只是一个提示。保持CC低不应被视为自然法则。如果您认为代码是可维护和可测试的,请记录文档中的高ILCC,解释无关紧要的原因,然后继续。