【问题标题】:PHP: PSR-2: Why blank lines after namespace / use declarations?PHP: PSR-2: 为什么命名空间/使用声明后有空行?
【发布时间】:2015-02-01 19:11:43
【问题描述】:

所以前几天我正在查看 PSR 编码标准(我已按时遵循),我总能理解所有事情的原因,并且我在过去 10 多年中所做的所有工作大部分都是以这种方式编码的在我的大学时代,非常相似的标准被强加给了我——它只是卡住了。

但是,我确实想知道PSR-2 标准中的这条注释:

命名空间声明后必须有一个空行,使用声明块后必须有一个空行。

这是为什么?我不反对它,但我确信有某种背景或历史需要解释,而且它从来没有真正跳出来告诉我为什么。我想明显的原因是易读性,但我觉得这个标准有更深层次的原因。

我在做这件事时 - 有没有人知道任何好的资源来解释所有 PSR 指南背后的逻辑?在试图说服其他人遵循它们时,有一个官方的推理和历史会产生特定的标准,这很有用,他们可能不相信这符合他们的最大利益。

【问题讨论】:

  • 易读性似乎是显而易见的答案。你还需要什么理由?易读性本身就是一个重要的原因。基本上整个 PSR-2 都是关于易读性的。对于 PSR-2 中的所有其他规则,您可能会问同样的问题,答案通常是因为它是这样决定的,因为这是大多数[起草标准]的人认为最易读的。
  • 您可能应该省略问题的最后一段,以免它因过于宽泛而被关闭;也就是说,剩下的问题是在征求意见。
  • 邮件列表有很多历史。 Here is a particularly relevant thread.
  • @deceze - 不同意,PSR 是关于互操作性的,并且还鼓励易于修改、可扩展、可调试的代码。易读性只是随之而来的胜利。它过于主观,不能成为编码标准的唯一基础。
  • PSR 总体上是关于互操作性的,是的。 PSR-2 特别是“只是”一个编码风格指南。它与 API 级别的互操作性无关,它只是一种统一的方式来设置样式,以便不同的程序员可以轻松地阅读它们。这是关于“人类级别的互操作性”。

标签: php coding-style standards psr-2


【解决方案1】:

好吧,什么看起来更好?这个:

namespace Foo;
use Bar\Baz;
use Bar\Qux;
function test()
{
}

或者这个:

namespace Foo;

use Bar\Baz;
use Bar\Qux;

function test()
{
}

我认为它不言自明。

【讨论】:

  • 正如我在答案下方的 cmets 中所说,这是非常主观的(尽管我同意)。鼓励更大的系统更模块化、更容易修改、更容易扩展和更容易调试的显式换行声明是什么?让事物看起来更漂亮是一种副作用,而不是主要目标。
  • @Todd 它主观的,但它也是整体投票的编码标准的一部分。你可能会争辩说“更漂亮”的代码更容易调试,编辑起来也更愉快,但仅此而已;毕竟,它是一种编码标准,而不是一种设计理念,它通常有比美学更具体的理由来支持:)
【解决方案2】:

我认为您将获得的最佳资源是 PHP-FIG 邮件列表,特别是 Google Groups 上的存档。以下是与您的问题相关的一些有趣的讨论:

我个人的回忆是,该标准是 PEAR2、PHPCS、Doctrine1 和 Flow3 样式的混合。但这都是5年前的事了,我有forgotten all about it

【讨论】:

    猜你喜欢
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 2016-06-06
    相关资源
    最近更新 更多