代码缩进对齐用空格还是制表符?
这是一个一直都存在争议的问题,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个字节;
源码文件变小了,理论上还可以略微提高编译速度;