代码缩进用 tab 好还是 space 好?

3,531 阅读2分钟

我的观点

关于代码缩进,先说下我的偏好,我喜欢 tab,原因有以下两点:

  • 风格灵活多变。缩进距离可依个人喜爱随意更改,你用 2 格缩进也好,4 格也罢,甚至是 8 格也行。这都仅会影响使用者自己的编辑器显示效果,而不会影响到其他人的显示效果。
  • 占用空间小。无论缩进展示的有多宽或者多窄,一个 tab 缩进始终只占用一个字符的大小。

大家的观点

现在大家普遍都喜欢用 space 缩进,因为觉得这样缩进距离是可控的,在每个机器上展示的效果都是一模一样。

但是我觉得在所有机器上展示效果一模一样未必是好事,因为这样做就把这个缩进定死了,没办法通过简单有效的方法再更改了。我们每个人的审美和喜爱都不一样,就只针对于 space 应该用 2 个空格还是 4 个空格就有很多不一样的声音。有的人认为 2 个空格太小气了,密密麻麻地看着难受;也有人认为 4 个空格太浪费空间了,代码叠个两三层就飞出去了。

所以,和 tab 缩进相反,space 缩进有以下特点和争议:

  • 所有机器缩进大小一致,但与此同时也限制死了缩进距离,没办法再更改了。
  • 每个人审美不同,2 空格 4 空格争论不休。
  • 太占用文件大小空间了,整个文件下来有 1/4 左右地空间被缩进所占去。

拿 Vue.js 未压缩版的代码文件距离,以下是各种缩进风格的对比图:

space 缩进

space 2 格缩进

文件大小:334KB

space 4 格缩进

文件大小:395KB

tab 缩进

tab 2 格缩进

tab 4 格缩进

文件大小:303KB

(因为 tab 缩进文件大小不受缩进距离效果影响,始终只占 1 个字符,故放一张文件大小的图片就够了)

最后

针对该 Vue.js 文件,最后进行如下数据的对比,
tab 缩进在不影响每个人使用感受的情况下:

  • 比 space 2 空格缩进节省了 9.3% 的文件大小 —— (334KB - 303) / 334KB
  • 比 space 4 空格缩进节省了 23.29% 的文件大小 —— (395KB - 303) / 334KB