PSR-2是否要求垂直对齐?

12

这两个之间可以放置什么内容:

$value = 'value';
$user = 'John';
$timestamp = 1480927909;
$day = date('Y-m-d', $timestamp);
或者
$value     = 'value';
$user      = 'John';
$timestamp = 1480927909;
$day       = date('Y-m-d', $timestamp);

1
据我所知,它不需要。唯一需要垂直对齐的是phpdoc标签,但这超出了psr-2规范的范畴。 - Federkun
5
我认为这样做可以极大地提高可读性,所以我总是进行这种排列。 - Daniel W.
6
@DanFromGermany - 只有当名称长度大致相等时,它才会提高可读性。一旦您需要处理其中一个或两个元素的名称远远长于其他元素的数据集,它实际上可能会降低可读性。如果您将来需要调整=符号的偏移量,它还可能干扰您的差异比较。出于这些原因,我有时喜欢使用这种对齐方式,但并不总是这样。 - Simba
谢谢大家,我注意到 Laravel 5.1、5.2 和 5.3 使用 PSR-2 标准,但是垂直对齐在最新的版本 5.3 中已被移除,因此似乎它并没有被 PSR-2 标准所规定。 - Marko Milivojevic
4
这些的易读性高度主观。对我来说,与单个空格缩进的版本相比,对齐的版本要不可读得多。甚至不考虑函数参数和参数的类似原则。 - helvete
1
Robert "Uncle Bob" Martin在《Clean Code》中有力地反对这种水平对齐方式:“……你会被诱惑只看变量名而不看[值]。”我发现这是真的。我会从左到右,从上到下阅读未对齐的示例,但是我会先从上到下,然后从左到右阅读对齐的示例。就像[$value, $user, $timestamp, $day] = ['value', 'John', 1480927909, date('Y-m-d', $timestamp)]一样,很难理解。 - CJ Dennis
1个回答

14

PSR-2没有针对这种类型的行内对齐的具体规则:

来自PSR-2结论:

这个指南故意省略了许多样式和做法的要素,包括但不限于:

  • 全局变量和全局常量的声明
  • 函数的声明
  • 运算符和赋值
  • 行内对齐
  • 注释和文档块
  • 类名前缀和后缀
  • 最佳实践

未来的建议可能会修改和扩展此指南以处理那些或其他样式和做法的要素。

值得一提的是,PHP-FIG Group曾经在PSR-1中讨论过行内对齐(链接),但被从最终版本中删除:

最初的长格式PSR-1涵盖了行内对齐、全局变量、三元运算符、赋值和许多其他东西。由于各种原因,这些都被删除了;它们的墓志铭在PSR-2的结论中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接