今天又有人跟我讨论缩进风格的统一,这就牵扯到了 tab 与 space 之争

其实,我是觉得没什么可争的,只要在一个文件中不混用,就完全没有问题。但是我们的项目里面混用的情况太多,所以我们需要一个规矩。我当然选择 tab。而且,几乎没有可能让我改成空格。

虽然我说没什么可争的,每个人也都可以选择自己喜欢。但我还是要在这里比较一下,从比较中,你可以很明显看出我是 tab 党。

space

space 党认为,以 space 缩进的代码,在任何平台的任何编辑器里面样子都是一样的,因为space始终只占一个字符的宽度(不过,也需要等宽字体的吧…)。我觉得这个理由很扯 - 会有人去做这样的比较吗,这样的比较又有什么意义呢?

space 党中也有不一致的,有 2、4 甚至 3、6 的,更有疯狂者用 1,当然最多的还是 4。

space 缩进的一个很大弊端是容易多或少,而且很难发现,比如打回退键的时候多打了一下。

space 缩进的源代码比 tab 缩进的源代码要大很多 - 我是哪怕一个字节都要省的。

tab

tab 本身就是为了排版而生的,虽然它本身设计是 8 个字符的宽度,但绝大多数的编辑器都是可以而且默认设置成 4 个字符的宽度。

多缩进或少缩进很容易就能看出来,除非你很变态地把 tab 宽度设成 1 个字符。

源代码会小很多。

究竟 space 还是 tab

其实上面的比较,只有发生错误那条才是最重要的。至于选择哪个,完全看你自己,唯一的一点,不要混用。

建议

造成混用的原因在于程序员其实对 tab 还是 space 没有任何感知,因为它们对他们来说是透明的,很大一部分程序员从来都不会看看自己是否混用了 tab 和 space,或者无所谓,看见了也不会去改,或者懒,或者根本就不知道如何看。

当前的各种代码编辑器,各种 IDE,几乎都可以设置空白字符是否可见,强烈建议打开,如果你真的无法习惯,请慢慢习惯;如果无法慢慢习惯,请偶尔打开看一下再关。

不要让空白字符始终对你透明,因为空白字符同样也是代码。