代码质量

Cognitive Complexity

认知复杂度:衡量代码被阅读和理解的复杂度的一个度量方法

朴素的考虑

  • 代码中用到一些语法糖,把多句话融合成一句话,但代码没有变得更复杂,有利于降低认知复杂度
  • 出现了break等终止线性的代码阅读,如出现循环、条件、try-catchswitch-case、一连串的and or操作符、递归以及goto类的跳转,代码认知复杂度应该会上升
  • 多层嵌套结构让代码变得复杂

评分规则

对线性的代码逻辑中,出现一个打断逻辑的东西,+1

当打断逻辑的是一个嵌套时,+1

Cyclomatic Complexity

圈复杂度v(G):衡量一个模块判定结构的复杂度,数量上表现为独立线性路径的条数

当一个代码中含有较多的分支语句,其逻辑复杂度就会增加

Module Design Complexity

模块设计复杂度iv(G):移去那些不包含子模块的判定和循环结构后,得到的圈复杂度

Essential Complexity

基本圈复杂度ev(G)

Average Operation Complexity

平均操作复杂度OCAvg:一个类的所有非抽象的方法的平均圈复杂度

Maximum Operation Complexity

最大操作复杂度OCmax:一个类的所有非抽象方法的最大圈复杂度

Weighted Method Complexity

加权方法复杂度WMC:一个类的所有方法的圈复杂度之和