PSR-2控制结构的开口支撑

时间:2015-11-19 13:58:18

标签: php psr-2

我试图理解为什么PSR2在新行上有类和方法的大括号,而其余的没有。我会说,如果大括号总是在新行上,那么阅读代码要容易得多。

class Foo extends Bar implements FooInterface
{
    public function sampleFunction($a, $b = null)
    {
        if ($a === $b) {
        }

有人可以解释背后的逻辑:

  

打开控制结构的大括号必须在同一条线上,并且关闭大括号必须在主体后面的下一行。

2 个答案:

答案 0 :(得分:3)

我对此处推理的理解基本上是为了防止连续代码块变得过长。

例如,假设我有一个用PSR-2风格编写的50行函数。如果该函数包含10个if()条件和5个循环,那么我的规则下的函数将为65行。

由于它是一个单一的功能,我需要能够将它作为一个单独的实体使用,所以能够一次看到它真的很有帮助。使用50行功能,这是可行的。如果函数长度为65行,则会变得更加困难。

事实上,现在看着我的编辑器窗口,我一次可以看到30行,所以即使是50行功能也有点太长了,无需在IDE中重新调整大小或移除停靠的面板即可轻松管理。 / p>

现在我知道干净的代码规则会说50行函数无论如何都要太长,需要重构。我同意这一点。但是猜猜:50线以上的功能很常见;我必须一直处理它们,并且它们中不必要的空白区域越容易使用它们。

然而,最终,这只是对其背后根本原因的一种解释。

PSR-2的真正原因在于这是因为意见的共识如何下降。他们调查了所有框架和其他已建立PHP编码标准的人。所有这些不同的标准都存在,因为人们坐下来思考如何最好地格式化他们的代码。他们不同意,因为它是一个自以为是的主题,但有广泛的协议领域,这是形成PSR标准的原因。

答案 1 :(得分:1)

有几个原因。

  1. 民主/民意。民意调查来自PHP-FIG,这种大括号的项目使用的是这种大括号。您可以通过Paul M Jones here(搜索“大括号”)阅读更多内容。
  2. 历史用法。此样式称为K&R,适用于Kernighan和Ritchie,它在C中广泛流行(出于各种原因,请参阅维基百科文章)。与许多语言一样,PHP在语法和风格上都受C的影响很大。 (另外,PHP主要用C编写!)
  3. 视觉区分。扫描大部分代码时,更容易发现函数和类的起始位置,并将它们与控制块区分开来。