用 Tab 还是 Space?事关程序员的信仰之争。2015 年程序员 Uku Pattak 分析了 GitHub 上多种语言的热门项目(star 数量高)中使用 Tab 和空格的对比情况。2016 年,谷歌程序员 Felipe Hoffa 分析了 10 亿份代码。
分析结果可先看下图:
40万个repo, 10亿份代码文件, 14TB 代码
规则:
数据来源:已存储在 BigQuery 上的 GIthub 文档
Star 很重要:只选择了2016年1月到5月之间加星量(star)在前 40 万个的项目
排除小文件:代码文件至少得有 10 行代码,开始的字符是:空格或者制表符
去除冗余:不管它们存在于多少个项目中,相同的程序文件只算一次
一个文件一票:有些代码文件中混用了制表符和空格。如果该文件制表符用的多,那它就算制表符一票。反之亦然。
C 语言
分析了 371 个热门项目,结果:
-
32.08% 用 Tab
-
35.31% 用 4 个空格
-
26.15% 用 2 个
-
4.31% 用 3 个
-
2.16% 用 8 个
C++
分析了 248 个热门项目,结果:
-
20.56% 用 Tab
-
39.11% 用 4 个空格
-
38.71% 用 2 个
-
1.61% 用 3 个
CSS
分析了 357 个热门项目,结果:
-
19.89% 用 Tab
-
71.71% 用 2 个空格
-
8.4% 用 4 个空格
Go
分析了 238 个项目,结果:
-
98.32% 用 Tab
-
0.84% 用 2 个空格
-
0.84% 用 4 个
Groovy
分析了 110 个项目,结果:
-
8.18% 用 Tab
-
17.27% 用 2 个空格
-
74.55% 用 4 个
Haskell
分析了 308 个项目,结果:
-
1.62% 用 Tab
-
61.69% 用 2 个空格
-
36.69% 用 4 个
Java
分析了 293 个项目,结果:
-
11.6% 用 Tab
-
23.21% 用 2 个空格
-
65.19% 用 4 个
Java
分析了 317 个项目,结果:
-
13.25% 用 Tab
-
59.94% 用 2 个空格
-
26.81% 用 4 个
PHP
分析了 408 个项目,结果:
-
28.68% 用 Tab
-
6.12% 用 2 个空格
-
65.2% 用 4 个
Ruby
分析了 489 个项目,结果:
-
0% 用 Tab
-
100% 用 2 个空格
-
0% 用 4 个
Scala
分析了 220 个项目,结果:
-
0% 用 Tab
-
98.64% 用 2 个空格
-
1.36% 用 4 个
Shell
分析了 288 个项目,结果:
-
21.88% 用 Tab
-
48.26% 用 2 个空格
-
28.82% 用 4 个
-
0.35% 用 3 个
-
0.69% 用 8 个
Swift
分析了 88 个项目,结果:
-
5.68% 用 Tab
-
11.36% 用 2 个空格
-
82.95% 用 4 个
Python
分析了 234 个项目,结果:
-
2.99% 用 Tab
-
5.13% 用 2 个空格
-
91.88% 用 4 个
(难道我是异类,我其他语言都喜欢用空格,只有Python喜欢用tab)
我们统计一下VerilogHDL,VHDL你用Tab还是用空格键?