PSR-2 控制结构的左括号

PSR-2 Opening braces for control structures

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

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

谁能解释一下背后的逻辑是什么:

Opening braces for control structures MUST go on the same line, and closing braces MUST go on the next line after the body.

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

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

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

事实上,现在看看我的编辑器 window,我一次可以看到 30 行,所以即使是 50 行的函数也有点太长了,如果不调整大小或删除停靠的,就很难管理我的 IDE.

中的面板

现在我知道干净的代码规则会说一个 50 行的函数无论如何都太长了,需要重构。我同意这一点。但是你猜怎么着:50 行或更多行的函数很常见;我必须时时刻刻和他们打交道,他们身上不必要的白色space越少,他们就越容易相处。

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

PSR-2 之所以如此,是因为舆论的共识就是这样下降的。他们调查了所有框架和其他已建立 PHP 编码标准的框架。所有这些不同的标准之所以存在,是因为人们已经坐下来思考如何最好地格式化他们的代码。他们不同意,因为这是一个自以为是的主题,但有广泛的共识,这就是形成 PSR 标准的原因。

几个原因。

  1. Democracy/Popular 意见。PHP-FIG and this brace style is what the majority of those projects used. You can read more, by Paul M Jones here 中进行了投票(搜索 "braces")。
  2. 历史用法。这种风格被称为K&R,用于Kernighan和Ritchie,在C中广泛流行(出于各种原因,请参阅维基百科文章) . PHP 和许多语言一样,在语法和风格上都深受 C 的影响。 (此外,PHP 主要是用 C 编写的!)
  3. 视觉上的区别。扫描大段代码时,更容易发现函数和 类 的起始位置,并将它们与控制块区分开来。