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


PSR-2 Opening braces for control structures

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

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

有人能解释一下背后的逻辑吗

控制结构的开括号必须在同一行上,闭括号必须在正文后的下一行上。

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

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

由于它是一个单一的函数,我需要能够将其作为一个单一实体来处理,所以能够同时查看所有内容真的很有帮助。对于50行函数,这是可行的。如果函数长度为65行,则会变得更加困难。

事实上,现在查看我的编辑器窗口,我一次可以看到30行,所以即使是50行的函数也有点太长,如果不调整或删除IDE中停靠的面板,也无法轻松管理。

现在我知道了,干净的代码规则会说一个50行的函数太长了,需要重构。我同意这一点。但你猜怎么着:有50行或更多行的函数很常见;我必须一直与他们打交道,他们身上不必要的空白越少,就越容易与他们共事。

然而,归根结底,这只是对其背后根本原因的一种解释

PSR-2出现这种情况的真正原因是,这就是意见一致性下降的原因。他们调查了所有的框架和其他制定PHP编码标准的人。所有这些不同的标准之所以存在,是因为人们坐下来思考如何最好地格式化他们的代码。他们不同意,因为这是一个固执己见的主题,但有广泛的一致领域,这就是形成PSR标准的原因。

几个原因。

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