标签:代码重构
最近使用SourceMonitor工具做代码优化,过程中对一些原来耳熟能详的名字现在有点模糊了。这里记录一下。
函数复杂度,这里一般指的是函数圈复杂度。(Function Complexity)
概念:
所谓圈复杂度是一种代码复杂度的衡量标准。在软件测试的概念里,圈复杂度“用来衡量一个模块判定结构的复杂程度,数量上表现为独立现行路径条数,即合理的预防错误所需测试的最少路径条数,圈复杂度大说明程序代码可能质量低且难于测试和维护,根据经验,程序的可能错误和高的圈复杂度有着很大关系”。
公式:
计算公式1:V(G)=e-n+2p。其中,e表示控制流图中边的数量,n表示控制流图中节点的数量,p图的连接组件数目(图的组件数是相连节点的最大集合)。因为控制流图都是连通的,所以p为1。
计算公式2:V(G)=区域数=判定节点数+1。其实,圈复杂度的计算还有更直观的方法,因为圈复杂度所反映的是“判定条件”的数量,所以圈复杂度实际上就是等于判定节点的数量再加上1,也即控制流图的区域数。
计算公式3:V(G)=R。其中R代表平面被控制流图划分成的区域数。
函数深度(Block Depth)
这个概念在网上没有找到,我在SourceMonitor中试了一下。这里的深度是基于文件来的。比如文件内容如下:
Prize { String (String s1String s2String s3){} (String a){} }
block depth(0):1
block depth(1):3
函数深度是指嵌套的层数,最外层是0,每增加一层便加一。
标签:代码重构
原文地址:http://mingsuper.blog.51cto.com/8269088/1694648