为什么三元运算符比if/else更复杂?

ley*_*you 15 php pdepend

我正在使用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.

Mat*_*era 3

pdepend 用于确定复杂性的算法为三元运算符的使用添加了两个,即使它们应该相同,因为它的工作方式与 if else 相同,并且添加了相同数量的路径。根据我的经验,您应该不会在实际应用中看到太大的实际差异(如果有的话)。