循环复杂性:何时重构代码?

软件行业中的每个人都希望重构他们的代码,但很少有人愿意这样做。

不断有新的功能需求,我们正在向代码库添加新的代码。 代码库呈指数增长。 我们摄入的咖啡越多,我们添加的代码行就越多。

一段时间后,将变得更加难以调试或修复错误或进行更改。 没有人愿意承担帮助新手理解代码库的责任。

是时候我们问自己几个问题了–

  • 程序/功能是否可测试
  • 每个人都了解程序/功能吗?
  • 程序/功能是否足够可靠?

我们可以使用圈复杂度来回答上述问题。 循环复杂度用于确定一段代码的复杂度 。 这也是确定代码是否需要重构的一种方法。 复杂性取决于分支(如果有语句等)。 它可以由以下公式表示:

 圈复杂度= E-N + 2 * P 

哪里,

E =流程图中的边数。

N =流程图中的节点数。

P =具有出口点的节点数。

例:

 如果A = 10 THEN 
如果B> C然后
A = B
其他
A = C
万一
万一
打印A
列印B
打印C

资料来源:Tutorialspoint

控制流显示七个节点(形状)和八个边缘(线)。 因此,使用形式公式,圈复杂度为8–7 + 2 = 3

请注意:对于单个程序(或子例程或方法), P始终等于1。

好吧,那是计算眼周复杂度的困难方法。 使用决策点规则计算圈复杂度的最简单方法。 由于有两个决策点,因此圈复杂度为2 +1 = 3

确定是否需要重构方法的基本规则:

  • <10易于维护
  • 11–20难以维护
  • 21+需要重构或重写

还请记住,更高的复杂度使代码更难以进行单元测试

阅读更多