为什么Wordpress代码如此“空间友好”?


22

WP核心,许多WP插件和WP编码标准本身使用Space字符的“大量应用程序” (不是用于缩进,而是在括号和括号的“内部”)。这似乎是Wordpress特有的-这种样式/理念似乎在其他类似项目(PHP或其他项目)中不存在。

有关此方法的更多信息,请参见:https : //make.wordpress.org/core/handbook/coding-standards/php/#space-usage

例: foreach ( (array) $foo as $bar ) { ...

我指的是foreach之后,第一个(之后,最后一个之前的)空间(以及上面链接中“空间使用情况”中显示的其他类似空间)。

这种样式对我来说似乎是不必要的-它需要更多的键入操作,并且(opinion)使解析代码在视觉上更加困难。(/ opinion)

我的愿望不是辩论这种风格是否是一个好主意。相反,我只是想了解为什么这是推荐样式的动机。甚至对WP编码标准的评论者也很好奇:

在此处输入图片说明

提供给MK Safi问题的答案基本上是:

  1. 为了提高可读性
  2. 现状(又称“就是这样”)

我问的理由是,我个人认为在仅内部项目中采用WP编码标准(关于“空间使用”)没有太大价值。但是,我很好奇我是否缺少某些东西。

除了上面列出的两个以外,是否还有其他理由可以遵循Wordpress的“空间使用”样式?


2
只要您保持一致,就可以在内部项目中做自己喜欢的事情。附带说明一下,我们使用制表符而不是空格,因此可以说我们需要更少的键入,如果您拥有一个现代的IDE可以为您完成所有格式的设置并可以为您重新设置为不同的样式(例如,崇高的风格),那么这一点都不重要(带有软件包,PHPStorm等))
Tom J Nowell

感谢您的评论,@ TomJNowell!我想也许我在“问题”中沟通不畅-我问的更少关于制表符/空格的缩进,而更多地询问了make.wordpress.org/core/handbook/coding-standards/php的 “空间使用情况”下提到的规则/…。抱歉,我不清楚!
rinogo'1

5
没有语法突出显示时,阅读起来会更容易。至少这就是为什么我在内部项目中使用这种样式的原因。我必须经常在具有最小配置的vi的普通控制台中编辑PHP。
fuxia

2
FWIW,MediaWiki具有非常相似的样式约定,并且实际上在执行它方面非常严格(至少在内核中)。他们甚至有一个脚本,可以自动添加缺少的空格。我能说的是,过了一会儿,人们已经习惯了。
Ilmari Karonen

1
@rinogo我知道,评论有时只是评论,而不是答案:)
Tom J Nowell

Answers:


13

共鸣

关于“空白”(无论是否使用制表符或空格):这只是项目的个人喜好。

WP编码标准imo很乱,可以忽略-只要您不贡献核心,那就是

  • 一个不同的故事
  • 样式指南也在那里被忽略。

“ [...]它不会追溯应用到较旧的代码上,因为它使svn / git历史非常难以使用。官方政策是新代码应遵循样式指南,但是如果您碰巧正确格式化了相邻代码,那么就可以了,但是只禁止格式化代码或禁止提交仅格式化代码的补丁程序。”

-@TomJNowell在评论中

备择方案

您最好坚持使用PSR标准(即2)或类似Symfony标准(或您自己的标准)的东西。

性能提升和工具

拥有编码标准(除了要共享一个而讨厌它的少数人,而其余的则由它来决定)或拥有更多或更少的制表符或空格,您将不会有任何收益。如果您担心使用了不必要的磁盘空间或程序速度变慢,则仍可以在提交时压缩代码(请参阅GitPHPHooks项目)。您将从原始文件空间中获得的最大收益约为5%,几乎等于HTML语法压缩/缩小所提供的收益。有Node.js的缩小工具,通过NPM为可用。

我个人真正发现的有用的是PHP Linter和_PHP Mess Detector。我将两者都整合到了GitPHPHooks库中,因此我不必考虑或关心它的运行。


Core不会忽略样式指南,但是由于它使svn / git历史记录非常难以使用,因此它不会追溯应用到较早的代码中。官方政策是新代码应遵循样式指南,但如果您碰巧正确设置了相邻代码的格式,就应该这样做,但是只能格式化代码或禁止提交仅格式化代码的补丁
Tom J Nowell

@TomJNowell因此会导致样式指南无效:)无论如何,请进行编辑并将其添加到答案中。这是值得注意的信息。
kaiser 2015年

我想我的问题不是很清楚-我在make.wordpress.org/core/handbook/coding-standards/php/…上较少指的是制表符还是空格,而更多是指“空间使用情况” 。我将对问题进行更清晰的编辑。
rinogo'1

1
@rinogo我第一次看对您,因此是第一段。顺便说一句,我认为这也更具可读性。
kaiser 2015年

7

点后的空格是正常的,例如$baz . '-5',这种样式在许多用于运算符的编码标准(y + z)中使用。

这样做是为了提高可读性,例如,其中一个比另一个更具可读性。

$cow.$dog.$cat.$table.$chocolate.$puddle.$iterator.$stuctureone.$stucturetwo

$cow . $dog . $cat . $table . $chocolate . $puddle . $iterator . $stuctureone . $stucturetwo

当被其他“代码”包围时,这一点变得更加明显。

至于括号周围的空格,( 1, 2, 3 )我也不知道,我想这也是为了提高可读性。

这可能会造成混淆,因为WordPress 标准本身在带有空格的注释中带有带括号的示例,并且代码库本身甚至混淆了具有空格的某些部分,而其他部分甚至在同一功能内也没有混淆(请参见下面的屏幕截图)。

实际上,大多数PHP标准与之相反,要求括号应包含其内容。实际上,大多数其他语言的编码标准都将其编写为:(1, 2, 3)因此,为什么WP以这种方式进行操作有点神秘。

这是一个与WordPress函数进行比较的示例。

在此处输入图片说明

较大版本进行比较:http : //i.imgur.com/nTEbV7v.jpg

我更喜欢右侧的代码,尤其是在查看全屏代码时,但这是个人喜好。


感谢您的回答!该.间距对我来说很有意义,因为.仅仅是一个二元运算符,就像+-。您对括号“包含”其内容的想法正是我问这个问题的原因。这种行为,再加上像方括号(WP说要使用$foo['bar']$foo[ $bar ])这样的更奇怪的规则,正是我问这个问题的原因。:)
rinogo 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.