代码缩进对齐用空格还是制表符?

代码缩进对齐用空格还是制表符? 这是一个一直都存在争议的问题,C、C++语言没有要求。 而python作为一门新兴语言,它规定了必须保持一致的缩进,不能混用空格和制表进行缩进。


我的看法

首先:空格和制表符的特点 空格是可显示的空白字符,固定占用1个字符的宽度。 制表符是控制字符,占用的宽度与编辑器的设置相关,占用宽度不固定。

为什么有的程序员很歧视制表符,就是因为用制表符做代码对齐的时候,在不同的编辑器下面会得到不同的对齐效果。

比如下面的代码: 使用制表符,制表宽度为4的时候代码是对齐的。

但是如果编辑器的制表宽度为8的时候,代码是不对齐了。

其次:代码缩进和对齐是两个不同的概念 缩进: 针对行首,向右缩进,让代码有层次感; 对齐: 行首以外的地方,让代码纵向对齐;

python要求代码必须缩进,但是并没有要求一定要对齐。 python没有花括号,只能用缩进的方式来判断代码层次。 缩进如果用空格,其建议值是4个空格,或者直接采用制表符缩进。

void main(int argc, char **argv)
{ /* 缩进:花括号顶格,下面的代码缩进1级 */
    int   a;
    short ab;
    char  abc; /* 对齐:变量名左对齐 */
    for(a = 0; a < 100; a++)
    {   /* 缩进:花括号下面的代码缩进2级 */
        ab  = a + 10; /* 对齐:操作符中间对齐 */
        abc = a * 10;
    }
}

结论:到底用空格还是制表符?

这个问题,缩进和对齐我们要分开来讨论 对于代码缩进,我推荐用 制表符。 对于代码对齐,我推荐用 空格。

代码对齐不能用制表符,而必须使用空格, 因为不同的编辑器制表符宽度可能不一样,不能保证代码严格对齐,而空格没有这个问题。

原因: 1.制表符输入方便,空格需要多敲几次,有可能出现空格数量不是4的倍数的情况;

有人会说,现在的编辑器,都可以自动把TAB键变为4个空格啊? 是的,输入TAB变4个空格没毛病,但是回退就不行啊。 对于制表符缩进,只要按一次回退就可以,而空格方式要按4次回退键! 我见过一段代码被多人频繁修改后,采用4个空格缩进,在第2层for循环时,本来应该是缩进12个空格,但最后变成了11个空格。

2.修改编辑器设置可以实现不同缩进宽度的视觉效果; 3.制表符生成的源码文件要比空格体积小,因为制表符只占1个字节,而4个空格占4个字节;

源码文件变小了,理论上还可以略微提高编译速度;