Taylor Otwell:PHP 框架的代码复杂性对比

Laravel

上周,当我针对 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%
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://medium.com/@taylorotwell/measuri...

译文地址:https://learnku.com/laravel/t/48070

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 3

就这吗,,,

3年前 评论

Eloquent (ORM) 竟然只有 6000行代码

3年前 评论

最长方法: 13 行代码 确实厉害

3年前 评论
大张 3年前
大张 3年前
kis龍 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!