我正在使用pdepend测试我的库,并且一些函数具有极高的复杂性.我刚刚意识到它来自三元运算符,但我不确定为什么.
具有如下功能:
function test($a) {
return $a > 10 ? 5:20;
}
Run Code Online (Sandbox Code Playgroud)
pdepend返回5的复杂度(npath).为什么有5条不同的路径?我只看到2.
具有如下功能:
function test($a) {
if($a > 10)
return 5;
else
return 20;
}
Run Code Online (Sandbox Code Playgroud)
npath复杂度为2.这是有道理的.
编辑:好的,我看看另一个问题:PMD - 使用三元运算符的NPath复杂度非常高(?
它是算法的一部分..但是,该函数只有2条可能的路径.该算法对我没有意义.节点数不反映路径数,并且任意将值加2.
pdepend 用于确定复杂性的算法为三元运算符的使用添加了两个,即使它们应该相同,因为它的工作方式与 if else 相同,并且添加了相同数量的路径。根据我的经验,您应该不会在实际应用中看到太大的实际差异(如果有的话)。