php – 使用空格而不是制表符缩进的客观原因?

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

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

PSR-2标准的基础?

PSR-2标准的作者想到的不仅仅是“外观和感觉”,不仅仅是基于观点的事物,很多人都难以理解为什么在团队合作中空间更好.

接受答案的解释:

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

事实:

1. GIT和其他版本控制系统以不同方式处理空白区域

根据我的经验,我们面对我们的项目:GIT和其他版本控制系统以不同的方式处理不可见空间TABS,并且它导致线条的变化,实际上没有受到影响.很容易不注意,当不小心添加一个空格时,TAB = indent在IDE中看起来相同,但GIT在合并时会有所不同.它会损害你有效地比较源代码控制中的修订版的能力,这真的很可怕.当你只有空间时,它永远不会发生.

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

标签宽度(在空格中)取决于您的环境(文本编辑器,首选项等),但空间宽度在任何地方都是相同的. IDE非常智能,可以根据您的个人喜好处理白色空间,但协作产生的输出应符合标准.

3.使用空格的开发人员比使用标签的开发者赚钱更多

使用空格而不是制表符与工资提高8.6%相关联.使用空格而不是制表符与薪水差异相关,因为额外的2.4年经验. (来源:Stack Overflow 2017 Developer Survey).

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

如果您项目中的每个合作者都会在编码上保持相同的标准 – 从长远来看,这将是好事,协作更有效率和专业性,在您重构或开发时也是如此.研究:

>例如,Ben Shneiderman在Exploratory experiments in programmer behavior证实了这一点:

when program statements were arranged in a sensible order,experts were able to remember them better than novices. When statements were shuffled,the experts’ superiority was reduced.

> Soloway和Ehrlich在1984年进行的一项1984年的研究引用了Code Complete年的研究,并从The Elements of Programming Style开始支持研究:

Our empirical results put teeth into these rules: It is not merely a matter of aesthetics that programs should be written in a particular style. Rather there is a psychological basis for writing programs in a conventional manner: programmers have strong expectations that other programmers will follow these discourse rules. If the rules are violated,then the utility afforded by the expectations that programmers have built up over time is effectively nullified.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返回预支付订单号的接口,目前微信支付所有场景均使用这一接口。下面介绍的是其中NATIVE的支付实现流程与PC端实现扫码支付流程
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返回预支付订单号的接口,目前微信支付所有场景均使用这一接口。下面介绍的是其中APP的支付的配置与实现流程
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户信息这个功能的开发流程。 配置 1.首先得在微信公众平台申请一下微信小程序账号并获取到小程序的AppID和AppSecret https://mp.weixin.qq.com/cgi-bin/loginpage?url=%2Fwxamp%2F
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一款开源且免费商用的后台开发框架,它基于ThinkPHP和Bootstrap两大主流技术构建的极速后台开发框架,它有着非常完善且强大的功能和便捷的开发体验,使我逐渐喜欢上了它。
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛,就离不开通讯了,然后我就想到了长连接。这里本人用的是GatewayWorker框架。
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返回预支付订单号的接口,目前微信支付所有场景均使用这一接口。下面介绍的是其中JSAPI的支付实现流程
服务器优化必备:深入了解PHP8底层开发原理
Golang的网络编程:如何快速构建高性能的网络应用?
Golang和其他编程语言的对比:为什么它的开发效率更高?
PHP8底层开发原理揭秘:如何利用新特性创建出色的Web应用
将字符重新排列以形成回文(如果可能)在C++中
掌握PHP8底层开发原理和新特性:创建高效可扩展的应用程序
服务器性能优化必学:掌握PHP8底层开发原理
PHP8新特性和底层开发原理详解:优化应用性能的终极指南
将 C/C++ 代码转换为汇编语言
深入研究PHP8底层开发原理:创建高效可扩展的应用程序
C++程序查找法向量和迹
PHP8底层开发原理实战指南:提升服务器效能
重排数组,使得当 i 为偶数时,arr[i] >= arr[j],当 i 为奇数时,arr[i] <= arr[j],其中 j < i,使用 C++ 语言实现
Golang的垃圾回收:为什么它可以减少开发人员的负担?