首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP 框架的代码复杂性对比

上周,当我针对 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%

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200906A0BVAS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券