空格、TAB、换行符都是在写程序代码的过程当中看不见的空白符号。
这方面的权威信息在哪里能找到?答案是Google。
关键字举例:
space tab
space and tab
space or tab
line break
new line on different system
...
这些查到的资料都是根据,而权威是那种好几年,甚至几十年都被大多数人认同的方式。
首先提供ASCII码表查询的链接。以及它们的几种表示方式。
参考ASCII码表
1. 空格和TAB
[ Space ] [ Space ] [ \x20 ] [ 0x20 ] [ 010 0000 ]
[ TAB ] [ Horizontal Tab] [ \t ] [ 0x09 ] [ 000 1001 ]
格式说明:[ 字符 ] [ 英文名称 ] [ 实际代码中的转义字符 ] [ 16进制 ] [ 2进制 ]
Unix/Linux、Windows、Mac OS X三种主流的系统上默认文本编辑环境下的TAB一律都是相当于8个空格长度的空白符。
ASCII码中使用一个字节表示的单个空白符<\t>。永远都是。
大家都知道C语言是仅次与汇编语言最接近机器语言的高级语言。能用这种语言写程序的需求都是写出尽可能更省资源更高效的程序。
学 过汇编和C语言的人都知道,这种语言的代码风格上都有极致简化表意的倾向。也就是说变量名,函数名等等,这些你看看标准C语言的库函数就会知道。学近代高 抽象的高级语言入门的人来看这样极端简化的命名法甚至显得有点变态。不是以英文作为母语的国家的程序员,用自己的母语学习计算机语言的程序员来讲记住这样 命名的函数或者系统变量是多么的痛苦,不说大家也都深有体会。翻翻当年在大学学过的C语言教科书,回忆回忆当时你第一次接触的时候第一时间理解到含义的有 多少?另外你知道在DOS这样经典系统的环境下超过8个字符的文件,目录名称是不能完全显示出来的吗?
在这样的背景下8个空格长度的TAB键作为缩进和对齐的手段是非常好理解的。
因为追求省资源,追求高效的程序环境中,把语言元素极其简化了的程序代码中8个长度的TAB键可以有以下好处。
a. TAB键在ASCII码中和一个空格一样是用一个字节来表示。当然机器去执行二进制代码的时候比8个空格效率高。8倍呀!^_^开个玩笑。
b. 仅占用一个字节而能表现出8个占位符的TAB键的缩进使程序控制结构显得非常的清晰。
(当然是对于熟悉那种简化型表达方式的人来讲)
c. 另外这种情况下8个占位符的TAB键不太容易让代码超出一行80行的限制。
格式化和标识符长度问题折中选择就是4个空格长度的空白占位符。至于用空格还是TAB,只要保持一种统一的格式就可以。
然而,
个人推荐使用空格,这里不是敲4次键盘,而是编辑器或者IDE中设置TAB键的工作方式。具体怎么设置,Google吧。
使用空格可以避免一些无法通过使用TAB键对齐来满足各种不同的编辑环境的情况。空格对齐任何时候都不会有麻烦。
如果只是从左边界的缩进对齐,TAB键和手动空格组合的方式完全可以对齐。但是对齐一种特殊格式的数组的时候如果TAB键和空格混合使用,那么在TAB长度不一样的编辑器中打开会100%错位显示。何况现在的机器上已经可以忽略TAB键和空格效率上的微弱差距。
如果你运行程序的机器配置烂到需要使用TAB键来代替空格的方式来进行提高执行效率的程度的话,我劝你还是换机器吧, 实在想象不出这样的机器还能做什么?网速?一个网页能多大?使用TAB,你能在MB级别上减少空格的数据量吗?如果不能,那写代码的时候还是老老实实用空 格吧。完全可以不用顾虑的。何况现在前段代码都是用工具就可以把多余的空格符清除干净,不过那也只是在部署到真正的生产(线上)环境中的时候才这样做。实际开发的时候还是以清晰和不同机器上的兼容为主。
3. 换行符
[ LF ] [ New Line Feed ] [ \n ] [ 0x0A ] [ 000 1010 ]
[ CR ] [ Carriage Return ] [ \r ] [ 0x0D ] [ 000 1101 ]
格式说明:[ 字符 ] [ 英文说明 ] [ 实际代码中的转义字符 ] [ 16进制 ] [ 2进制 ]
三种主流操作系统下《回车键》将输入以下字符
Windows: \r\n
Unix/Linux: \n
Mac: \r
Unix/Linux系统下用vim打开Windows上编辑的文件,\r\n会在行尾打印出^M字符。当然这可以归结到编辑器本身的问题,但是还是推荐大家一律使用Unix/Linux方式的换行符,就是\n。
理由是,
大部分web应用都是使用Unix/Linux作为服务器操作系统。因为在这样的系统下可以把系统资源利用得淋漓尽致。不用像Windows一样还要腾出来资源运行桌面环境。某一天你很有可能需要在Unix/Linux操作系统下打开文件进行编辑。除了Windows下的记事本,不管何种操作系统,何种编辑器,都是可以很好的识别换行符的类型,都会在编辑器或者IDE得界面上找到这个信息。并且都设有新建文件时默认创建的文件类型(其实就是换行符设置)。
Ps:记事本(Notepad)只有当行尾出现\r\n的时候才会显示换行,其他编辑器一般都有选择换行符的设置项。