根据PSR-2标准,是否有客观原因使用空格而不是制表符来缩进文件,有人可以提供:
PSR-2标准的基础是什么?
PSR-2标准的作者想到的不仅仅是“外观和感觉”,不仅仅是基于意见的事物,很多人都难以理解为什么在团队合作中空间更好。
根据Farsides的回答:存储库事件可能是为什么空间在PSR-2中被解释为缩进工具的确切情况。 PSR-2是为协助团队合作而开发的标准。行开头处的单个意外空间 - 使用制表符时 - 可能在IDE中不可见,并且可能会潜入存储库。如果有几个人在同一个文件上工作,很可能会产生不必要的冲突。使用空格而不是标签可以轻松捕捉眼球上的这种意外空间,这可能是一个原因,为什么使用它们成为标准。
答案 0 :(得分:14)
根据我的经验,我们面对的是我们的项目: GIT和其他版本控制系统以不同方式处理不可见的spaces
+ TABS
,这会导致行的变化,实际上还没有受到影响。很容易不注意,当不小心添加一个space
+ TAB
=缩进在IDE中看起来相同时,但GIT在合并时会有所不同。 它会损害您有效比较源代码管理中的修订的能力,这真的很可怕。当你只有spaces
时,它永远不会发生。
标签宽度(以空格为单位)取决于您的环境(文本编辑器,操作系统,首选项等),但各处的空间宽度相同。 IDE非常智能,可根据您的个人喜好处理白色空间,但协作产生的输出应符合标准。
使用空格而非制表符与8.6%更高的薪水相关联。使用空格而不是制表符与薪水差异相关,与额外的2。4年经验相关。 (来源:Stack Overflow 2017 Developer Survey)。
如果您项目中的每个合作者都会在编码上保持相同的标准 - 从长远来看,这将是好事,协作更有效率和专业性,在您重构或开发时也是如此。关于这方面的研究:
例如, Ben Shneiderman 在Exploratory experiments in programmer behavior中确认了这一点:
当程序陈述以合理的顺序排列时,专家能够比新手更好地记住它们。当声明被洗牌时,专家们会对此事进行调整。优势降低了。
Code Complete引用的 Soloway和Ehrlich 1984年的一项老研究,并支持The Elements of Programming Style的研究:
我们的实证结果突显了这些规则:程序应该以特定的方式编写,这不仅仅是美学的问题。而是以传统的方式编写程序的心理基础:程序员强烈期望其他程序员会遵循这些话语规则。 如果规则被违反,那么程序员随着时间推移建立的期望所带来的效用实际上无效。