对齐代码时,该用 Tab
,还是空格。这个话题,就像浏览器和操作系统之战,也是能让程序员争辩很久的。甚至还动粗,比如下面漫画。

每个程序员都有自己喜欢的编码风格以及编码习惯,那么,问题来了。

澳门新葡亰游戏网址 1

一个很常用也很简单的问题,让程序员分为两派。编程时,到时是使用Tab按键来进行首行缩进好呢还是敲空格按键好呢???少侠,别急,带老夫给你慢慢分析。

Uku Pattak 最近分析了 GitHub 上多种语言的热门项目(star
数量高的),伯乐在线摘编了其分析结果。

Tab 占用更少的空间

C 语言

分析了 371 个热门项目,结果:

澳门新葡亰游戏网址 2

  • 32.08% 用 Tab

  • 35.31% 用 4 个空格

  • 26.15% 用 2 个

  • 4.31% 用 3 个

  • 2.16% 用 8 个

使用 Tab 的文件或许和不使用 Tab 的在 gzip
压缩后并没有明显的区别。但是不使用 Tab
的话,就得多一道程序处理你的代码,以保证文件大小合理。你不得不依赖压缩工具。拿注释举例来说,注释很有用,即使无法压缩代码也要有注释。Tab
可以达到和空格同样的效果,所以不用 Tab 的话,平白无故就会膨胀代码。

C++

分析了 248 个热门项目,结果:

澳门新葡亰游戏网址 3

  • 20.56% 用 Tab

  • 39.11% 用 4 个空格

  • 38.71% 用 2 个

  • 1.61% 用 3 个

Tab 可个性化

CSS

分析了 357 个热门项目,结果:

澳门新葡亰游戏网址 4

  • 19.89% 用 Tab

  • 71.71% 用 2 个空格

  • 8.4% 用 4 个空格

每个编辑器都可以调整 Tab 字符的宽度。这通常被认为是 Tab
的缺陷,但是实际上,这正是 Tab 的优势所在。有了
Tab,别人就能以自己觉得方便的格式查看你的代码,而不是用你喜欢的格式。Tab
将代码表现从逻辑中分离出来,就像是 CSS 将页面表现从 HTML
中分离出来一样。Tab
使读者更方便,而不是让编写者掌控一切。用空格就像是在说:“我不管你读代码时方不方便,这是我的代码,你就得按照我的方式来”。

Go

分析了 238 个项目,结果:

澳门新葡亰游戏网址 5

  • 98.32% 用 Tab

  • 0.84% 用 2 个空格

  • 0.84% 用 4 个

Tab 更利于合作

Groovy

分析了 110 个项目,结果:

澳门新葡亰游戏网址 6

  • 8.18% 用 Tab

  • 17.27% 用 2 个空格

  • 74.55% 用 4 个

每个程序员都有自己不同的想法,在团队合作中这种个性更要重视。有的程序员喜欢缩进
2 个空格宽,有的喜欢缩进 4 个空格宽。使用
Tab,每个程序员可以用自己喜欢的缩进方式编写代码,编辑器会根据所设置的
Tab
宽度自动调整缩进,而不必手动调整或者机械地在pull之后改成自己的缩进风格,而在提交前又改回统一的风格。

Haskell

分析了 308 个项目,结果:

澳门新葡亰游戏网址 7

  • 1.62% 用 Tab

  • 61.69% 用 2 个空格

  • 36.69% 用 4 个

不需依赖特定工具

Java

分析了 293 个项目,结果:

澳门新葡亰游戏网址 8

  • 11.6% 用 Tab

  • 23.21% 用 2 个空格

  • 65.19% 用 4 个

使用空格时,缩进实际上是 N
个字符而不是一个,只不过编辑器展现出来的看起来像是一个字符而已。而使用
Tab,你每次按下 Tab 键,编辑器会插入 N
个空格;每次按回退键或是在缩进处删除字符时,编辑器会自动删除 N
个字符。当你不能用编辑器,而被迫使用其它工具时(例如当在嵌入了像是
codemirror 等工具的 webapp 中写一小段代码时),你会被空格丑哭的。尤其是
codemirror 会将 Tab 转换为空格,别人看你的代码时也会被丑哭。

JavaScript

分析了 317 个项目,结果:

澳门新葡亰游戏网址 9

  • 13.25% 用 Tab

  • 59.94% 用 2 个空格

  • 26.81% 用 4 个

Tab 易于选择

PHP

分析了 408 个项目,结果:

澳门新葡亰游戏网址 10

  • 28.68% 用 Tab

  • 6.12% 用 2 个空格

  • 65.2% 用 4 个

澳门新葡亰游戏网址,假设你要选中所有缩进,想把缩进加倍或是将它们换成空格的话,用 Tab
就很容易操作。因为这是正它的意义所在,Tab
就是为了这类情况发明的。而空格的意义就多了,所以你无法简单的查找、替换空格。这种并不是为了发挥某种工具的原本功能而使用它的行为,我们通常称之为
hack。使用空格来进行缩进就是一种 hack。

Python

分析了 234 个项目,结果:

澳门新葡亰游戏网址 11

  • 2.99% 用 Tab

  • 5.13% 用 2 个空格

  • 91.88% 用 4 个

使用 Tab 缩进的代码更易于复制粘贴

Ruby

分析了 489 个项目,结果:

澳门新葡亰游戏网址 12

  • 0% 用 Tab

  • 100% 用 2 个空格

  • 0% 用 4 个

Norbert Süle 在评论中
指出,复制粘贴用空格缩进的代码时,除非别人惯用的缩进宽度恰好和你的一样,否则你就得手动调整缩进。使用
Tab 就不会出现这种问题,因为 Tab 就是
Tab,它会和代码完美的融合在一起。每个人都使用 Tab
的话,世界都会更加美好。

Scala

分析了 220 个项目,结果:

澳门新葡亰游戏网址 13

  • 0% 用 Tab

  • 98.64% 用 2 个空格

  • 1.36% 用 4 个

Web 中的 Tab 更宽怎么办!

网站地图xml地图