什么是平均层次结构指标,以及如何降低分数?

时间:2014-05-08 20:32:02

标签: php oop inheritance code-metrics

我一直在使用PHPDepend来验证我写的代码的质量。 我不在低/平均列中的一个指标是平均层次结构高度指标。

pdepend.org上的定义是

  

“平均层次结构高度”度量标准是继承层次结构的平均深度。在十个类的系统中,AHH值为1可以用不同的方式解释,例如:五个类继承分析应用程序中的五个其他类,或者五个类继承自单个根类。

我的头脑只是没有抓住那句话所说的话,这意味着我正在努力弄清楚如何降低给出的分数。

1 个答案:

答案 0 :(得分:1)

class A{}

class A1 extends A{} // 1 depth

class A11 extends A1{} // 2 depth
class A12 extends A1{} // 2 depth

class B{}

class B1 extends B{} // 1 depth

class C{}

class D{}

有4个根类A,B,C,D

  • 层次结构有2个深度
  • B层次结构有1个深度
  • C层次结构有0深度
  • D层次结构有0深度

总和为3。

AHH = 3/4 = 0.75

来自代码

if (($count = count($this->rootClasses)) > 0) {
    $this->ahh = array_sum($this->rootClasses) / $count;

要降低此分数,您可以添加更多没有子项的根类(或低于最深的类)。或者减少层次结构的深度。