降低代码的圈复杂度——复杂代码的解决之道 (2)

换成大白话来说就是,尽量少写if、else、while、case这些流程控制语句。

其实你在降低你原本代码的圈复杂度的时候,其实也算是一种重构。对于大多数的业务代码来说,代码越少,对于后续维护阅读代码的人来说就越容易理解。

简单总结下来就两个方向,一个是拆分小函数,另一个是想尽办法少些流程控制语句。

3.1 拆分小函数

拆分小函数,圈复杂度的计算范围是在一个function内的,将你的复杂的业务代码拆分成一个一个的职责单一的小函数,这样后面阅读的代码的人就可以一眼就看懂你大概在干嘛,然后具体到每一个小函数,由于它职责单一,而且代码量少,你也很容易能够看懂。除了能够降低圈复杂度,拆分小函数也能够提高代码的可读性和可维护性。

比如代码中存在很多condition的判断。

重构前

其实可以优化成我们单独拆分一个判断函数,只做condition判断这一件事情。

重构后

3.2 少写流程控制语句

这里举个特别简单的例子。

重构前

其实可以直接优化成下面这个样子。

重构后

例子就先举到这里,其实你也发现,其实就像我上面说的一样,其目的就是为了减少if等流程控制语句。其实换个思路想,复杂的逻辑判断肯定会增加我们阅读代码的理解成本,而且不便于后期的维护。所以,重构的时候可以想办法尽量去简化你的代码。

那除了这些还有没有什么更加直接一点的方法呢?例如从一开始写代码的时候就尽量去避免这个问题。

4. 使用go-linq

我们先不用急着去了解go-linq是什么,我们先来看一个经典的业务场景问题。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssxyw.html