广告

使用空格键比用Tab键的程序员挣得多?!原因在这……

2018-09-25 10:05:04 Max Maxfield 阅读:
Stack Overflow 2017开发者调查数据分析表明,使用空格键的程序员比用Tab键的薪水高8.6%。无论是在美国、印度、英国、德国、加拿大,还是其它国家和地区,无一例外。我这儿有一段代码出了问题,它碰巧用了Tab键来缩进,但是30年来,我一直被告知要“慎用”Tab键……

最近,我们在网站上发布了Thomas (Tommy) Gartlan的一篇文章,文章发布后看起来有点问题:某处的代码缩进不见了,影响了可读性。PLkednc

这让我有点窘,因为我总是苦口婆心地教导我那些可怜的学生们写代码的时候要注意缩进,不要怕麻烦,这样可读性才好。PLkednc

说真的我有点惊讶,因为在编辑文章时,这段代码看起来很好。我回去检查,发现确实出问题了:PLkednc

Space-Tab-F1.gifPLkednc
这段代码本来是有缩进的,现在没了(来源:Max Maxfield)PLkednc

我一边捶胸顿足,一边动手重新缩进所有内容并在内容管理系统(CMS)中保存,然后我在浏览器中打开改好的版本,发现缩进又不见了。PLkednc

然后我去检查另一篇文章的代码。结果一样,这让我很失望:PLkednc

Space-Tab-F2.gifPLkednc
结果一样,我真是欲哭无泪!(来源:Max Maxfield)PLkednc

接下来只能在CMS文件中找原因了,这次查看原始HTML代码。我希望只是漏了<pre>和</ pre>标签,它是用来保留多余空格的。但是标签并没有漏,到底是什么原因让空格不见了?此时此刻,我的IT同事还在查看这个问题。上面显示的那段代码原本是这样的:PLkednc

Space-Tab-F3.gifPLkednc
这段代码本来缩进了4个空格(来源:Max Maxfield)PLkednc

好吧,这些都不是我今天想说的重点。在查找问题的过程中,我知道了Tommy是用Tab键来实现缩进的。输入代码时使用Tab键确实比较省事,但是30年来,我一直被告知要“慎用”Tab键,因为不同的系统可能用不同的方式解释它们。一个系统可能认为Tab代表四个空格,另一个系统则可能被设置为代表八个空格。但如果总是使用空格来缩进,就永远不会有歧义。我把这些告诉了Tommy,他回复说:PLkednc

“我得承认,我以前从没听说过不要使用Tab键。使用Tab键缩进很容易,但我们确实遇到了麻烦。一些IDE工具会自动执行缩进,因此检查它们是使用Tab键还是空格键十分有趣。”PLkednc

前不久,Barr Group向我介绍了嵌入式C语言编码规范。Michael Barr及其同事创建此规范最主要的原因是为了减少嵌入式软件(即固件)中的错误个数,包括由维护人员添加或修改的代码。PLkednc

规范中有两点让我印象深刻:PLkednc

(a)缩进时始终使用空格键,不要用Tab键;PLkednc
(b)最佳缩进是四个空格。PLkednc

当然,我向Tommy介绍了Barr Group的编码规范之后,他这样回答:PLkednc

“我现在肯定只用空格键了,因为使用空格键的人会赚更多钱......我可不是开玩笑!”PLkednc

什么!真的吗?这个我倒是从未听说过。Tommy为了证明他没有瞎说,让我到StackOverflow.blog上看调查报告。PLkednc

这真是太有趣啦。PLkednc

在Stack Overflow的2017开发者调查中,共有64,000多名受访者,其中28,657位“职业程序员”对这个“空格与Tab”问题进行了回答,又有12,426位对他们的薪水情况进行了回答。PLkednc

其中40.7%使用Tab,41.8%使用空格,而剩下的17.5%两者都用。偏爱空格与偏爱Tab的人数几乎完全相同,这很有意思,但如果你看一看他们的薪水,就更有趣了:使用空格进行缩进的程序人员比使用Tab的人挣得多,即使他们的工作经验完全一样。PLkednc

说得更具体一点,“使用空格键的程序员比使用Tab键的工资高8.6%,”换句话说,“这相当于一个多2.4年工作经验的程序员高出的薪水。”PLkednc

Space-Tab-F4.pngPLkednc

下图表明,无论是在美国、印度、英国、德国、加拿大,还是其它国家和地区,都是如此。PLkednc

Space-Tab-F5.pngPLkednc

针对这一调查结果,美国的程序员们反应热烈,纷纷发表了自己的观点。PLkednc

@ Rick Curl PLkednc
哇! 这个以前谁知道?以后我不要求加薪了,只要在代码中多插入空格就行了!PLkednc

@ Elizabeth Simon PLkednc
但是用Tab键更方便......因为在增加和删除缩进时按键次数少。PLkednc

必须承认,我来自从前的老学校,那时Tab键统领天下(我开始学的是汇编语言),但是如果使用空格更赚钱的话,我准备改了,哈哈。PLkednc

当然,我最喜欢的编辑器(Notepad ++)是使用Tab进行自动缩进的,所以改起来可能有点儿难.... ....PLkednc

@ Sean Ellis PLkednc
要么使用Tab键,要么使用空格键,想通过按Tab键来得到4个空格可不太好。如果输入错误并按“backspace”键来删除,你确定所有4个空格都删除了? 而大多数自动完成机制比这还糟。PLkednc

(原文发表于ASPENCORE旗下EDN姐妹社区EEWeb,参考链接:Spaces vs. Tabs? Coders Who Use Spaces Make More Money!;Jenny Liao编译)PLkednc

本文为电子技术设计原创文章,未经授权禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • @ Sean Ellis “如果输入错误并按“backspace”键来删除,你确定所有4个空格都删除了?”…… 请用 Shift+Tab
  • 哈哈哈notepad++其实可以设置tab自动转换为4个空格
  • 职业还是要有特质,有不违反人类习惯的偏执才能把一件事情做到极致,职业称谓其实还是挺神圣的,而且不分贵贱(贵贱是钱来衡量的),你对得起职业称谓你就是高尚的,你配不上这几个字,就与高尚无缘,尊重自己的职业,把他做到极致才好。
  • tab自动转换成空格
  • 自从遇到tab键在不同编辑器下面带来的麻烦后,我一直用空格键缩进,就没那么多还要设定的问题了,简单。
  • 作为一个纯粹的码农对自己的代码必须有点洁癖,怎能因为这点噱头改变自己的行为习惯?所以必须掌握一两个自动格式化工具,AStyle,uncrustify等等,一键瞬间完成一丝不苟,想要空格给你空格,想要Tab给你Tab,一个Tab代表几个空格也是可以设定的,你把空格说得再好,我还是照用我的Tab。
Max Maxfield
EEWeb主编。Max为EE Times的Designlines栏目提供内容,涵盖可编程逻辑、微控制器单元和原型设计。 多年来,他设计了从硅芯片到电路板,脑波放大器到蒸汽朋克“Display-O-Meters”的所有产品。 他拥有英国谢菲尔德谢菲尔德哈勒姆大学的控制工程学士学位。
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
广告
热门推荐
广告
广告
广告
EE直播间
在线研讨会
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了