上周,当我针对 5.4 版本进行重构和清理 Laravel 时,Graham Campbell 向我展示了该框架的一些代码复杂性统计信息。我决定将其与其他一些 PHP 框架进行比较,以了解 Laravel 如何堆叠。
我看了一些指标。一种是平均方法复杂度,它是循环复杂度的度量。查看此分数时,越简单越好。虽然这不是衡量代码质量的绝对 “最终指标”,但它确实为代码中的 “热点” 提供了不错的指示,可以使用重构。
我很高兴看到Laravel 在所有衡量的框架中具有最低的平均方法复杂度。另外,Laravel 不包含任何超过 13 行代码的方法。最大的方法复杂度低于 50 的仅有两个框架是 Laravel(17)和 Slim(13)。除了 Laravel 之外,没有其他框架的平均方法复杂度低于 2。
值得注意的是,Laravel 利用了 Symfony 的 HTTPFoundation 组件和 Console 组件。整个框架中没有大量 使用其他 Symfony 组件。比较的主要目的是比较 * I * 个人编写代码的方式与其他项目编写代码的方式。所有被测项目都具有足够大的纯第一方代码样本量,可以准确地进行测量。
我还比较了 Laravel 的 Eloquent ORM 和 Doctrine 的 ORM。该比较的结果可以在结果列表的底部找到。
Laravel
代码行数: 54,398
最长方法: 13 行代码
平均方法复杂度: 1.62
最大方法复杂度: 17
非静态方法占比: 94.81%
Symfony (Only Components, No Twig, No Doctrine)
代码行数: 118,636
最长方法: 136 行代码
平均方法复杂度: 2.72
最大方法复杂度: 155
非静态方法占比: 97.09%
Zend (选择最小安装选项)
代码行数: 55,904
最长方法: 73 行代码
平均方法复杂度: 2.76
最大方法复杂度: 53
非静态方法占比: 93.55%
Cake
代码行数: 62,860
最长方法: 56
平均方法复杂度: 3.30
最大方法复杂度: 75
非静态方法占比: 89.87%
Slim
代码行数: 4,127
最长方法: 26
平均方法复杂度: 2.40
最大方法复杂度: 13
非静态方法占比: 96.58%
Eloquent (ORM)
代码行数: 6,026
最长方法: 13
平均方法复杂度: 1.76
最大方法复杂度: 17
非静态方法占比: 91.57%
Doctrine (ORM Only, No DBAL)
代码行数: 39,294
最长方法: 148
平均方法复杂度: 2.94
最大方法复杂度: 152
非静态方法占比: 92.50%
领取专属 10元无门槛券
私享最新 技术干货