5

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

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

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

控制结构的左大括号必须在同一行,右大括号必须在主体之后的下一行。

4

2 回答 2

4

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

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

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

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

现在我知道干净的代码规则会说一个 50 行的函数无论如何都太长了,需要重构。我同意这一点。但你猜怎么着:50 行或更多行的函数很常见;我必须一直处理它们,它们中不必要的空白越少,它们就越容易使用。

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

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

于 2015-11-19T15:30:34.400 回答
2

几个原因。

  1. 民主/民意。PHP-FIG中进行了一项民意调查,大多数项目都使用这种大括号样式。您可以在此处阅读Paul M Jones的更多信息(搜索“大括号”)。
  2. 历史用法。这种风格被称为K&R,用于 Kernighan 和 Ritchie,它在 C 中广泛流行(出于各种原因,请参阅 Wikipedia 文章)。PHP 和许多语言一样,在语法和风格上都深受 C 的影响。(另外,PHP 主要是用 C 编写的!)
  3. 视觉上的区别。扫描大段代码时,更容易发现函数和类的开始位置,并将它们与控制块区分开来。
于 2016-09-27T07:29:58.440 回答