Hasty Briefsbeta

双语

Cyclomatic Complexity in C#

2 days ago
  • 圈复杂度(CC)统计通过方法的不同执行路径数,计算公式为1加上分支结构的数量(if、while、for、case、&&、||、?:、??)。
  • 得分1最简单,10是传统上限,25以上被微软CA1502分析器标记为过高。
  • CC提供了实现完全路径覆盖所需的最小测试用例数量;分数越高意味着越难阅读、测试和修改。
  • 重构包括提取方法、使用保护子句、多态、switch表达式、查找表以及消除布尔参数。
  • 阈值:1-10低风险,11-20中等,21-50复杂,>50不可测试;但上下文很重要(解析器、序列化器通常更高)。
  • NDepend、Visual Studio代码指标和Roslyn分析器等工具可测量CC;对于遗留代码,基线驱动规则更合适。
  • 将CC与分支覆盖率(CRAP分数)结合进行风险评估;IL CC可评估第三方库。
  • 认知复杂度通过考虑嵌套深度和布尔运算符而有所不同;这两个指标是互补的。