由于之前开发的模块是C++的,功能也相对简单,代码整体上来说简洁明了,清晰易懂。最近呢,由于项目原因,需要去熟悉C代码,因为功能相对复杂一些,所以每个函数都是很大,几百行一个。其实行数倒是其次,最让我讨厌的是代码本身写得是太复杂。简单一个例子就是:
void func()
{
if (condition)
{
...
if (condition)
{
几百行
}
...
}
}
我不知道大家看出来什么没有,这是一个圈复杂度很高的函数。不断的进行if嵌套,观感上就非常糟糕,即使当前没有问题,我想后期维护过程中,这种代码绝对很容易出问题。
如果改成如下,
void func()
{
if (!condition)
return;
...
if (!condition)
return;
...
}
这样的代码是不是易读多了。
下面找了些可以减少圈复杂的方法:
1. 重新组织函数
a. 提炼函数 - 将代码组织独立出来,使用函数进行封装,通过函数名诠释代码作用
b. 替换你的算法 - 使用更为简洁的代码,记住:复杂算法会导致bug可能性的增加及可理解性/可维护性的降低,如果函数对performance或者resource要求不高,提倡更为简单明了的算法。
2. 简化条件表达式