27

根据 PSR-2 标准使用空格而不是制表符来缩进文件是否有客观原因,有人可以提供:

  • 事实,
  • 参考,
  • 具体专业知识

基于哪个 PSR-2 标准?

PSR-2 标准的作者想到的不仅仅是“外观和感觉”,不仅仅是基于意见的东西,而且很多人很难理解为什么在团队合作中空间更好。

接受答案的解释:

根据 Farsides 的回答:存储库的事情可能是 PSR-2 中的空格被解释为缩进工具的确切情况。PSR-2 是为协助团队合作而开发的标准。行首的单个意外空格 - 使用制表符时 - 在 IDE 中可能不可见,并且可以潜入存储库。如果几个人在同一个文件上工作,很可能会产生不必要的冲突。使用空格而不是制表符可以轻松捕捉眼球上的这种意外空格,这可能是为什么使用它们成为标准的原因。

4

3 回答 3

17

事实:

1. GIT 和其他版本控制系统对待空白的方式不同

根据我的经验,我们在项目中遇到过:GIT 和其他版本控制系统对 invisible spaces+的处理TABS方式不同,它会导致行的变化,实际上并没有受到影响。很容易注意到,当不小心添加了一个space+ TAB= 缩进在 IDE 中看起来是一样的,但 GIT 会在合并时产生差异。它会损害您在源代码管理中有效比较修订的能力,这真的很可怕。当你只拥有它时,它永远不会发生spaces

2. 中和协作者环境的差异(编辑器、操作系统、偏好等)

制表符宽度(以空格为单位)取决于您的环境(文本编辑器、操作系统、首选项等),但空格宽度在任何地方都是相同的。IDE 足够聪明,可以根据您的个人喜好来处理空白,但为协作生成的输出应该符合标准。正如PSR-2 所述,仅使用空格,而不是将空格与制表符混合使用,有助于避免差异、补丁、历史记录和注释问题。使用空格还可以轻松插入细粒度的子缩进以进行行间对齐。

3. 使用空格的开发者比使用制表符的开发者赚更多的钱

使用空格而不是制表符与高 8.6%的薪水相关。使用空格而不是制表符与额外 2.4 年经验的工资差异一样高。(来源:Stack Overflow 2017 开发者调查)。

4. 关于编码风格重要性的大量研究

如果您项目中的每个合作者都保持相同的编码标准 - 从长远来看,这将是一件好事,协作会更加高效和专业,在您重构或开发时同样缩进。相关研究:

  1. 例如,Ben Shneiderman在程序员行为的探索性实验中证实了这一点:

    当程序语句以合理的顺序排列时,专家比新手更能记住它们。当陈述被洗牌时,专家的优势就降低了。

  2. Soloway 和 Ehrlich于 1984 年在Code Complete中引用的一项旧研究,并支持来自The Elements of Programming Style 的研究:

    我们的实证结果证实了这些规则:程序应该以特定的风格编写不仅仅是美学问题。相反,以传统方式编写程序有一个心理基础:程序员强烈期望其他程序员会遵循这些话语规则。如果违反了规则,那么程序员随着时间的推移所建立的期望所提供的效用就会被有效地取消

于 2016-02-26T10:58:40.290 回答
-1

许多人认为标准也比公制好。仅仅因为许多或大多数人认为某事,并不自动意味着它更好或更正确。

恰当的例子:制表符显然比空格好:)

于 2021-10-05T00:24:18.110 回答
-1

附加事实:

使用空格的项目中的正则表达式搜索表达式与使用制表符或混合制表符和空格的项目中的不同

于 2021-11-15T10:13:48.007 回答