是Tab?还是空格? 使用空格又是几个空格?


2.1 Tab和空格的区别

Tab和空格其实只是两个不同的符号,但在编程对齐中的意义却大不一样。一个Tab可以占空个格的位置,但一个空格就只有一个空格的位置。

在Keil开发环境中可以显示出Tab和空格符,不妨看一下在Tab和空格交替编辑下,原本使用占2空格Tab符号,实际在4隔空Tab下看代码(和注释)就凌乱了。


Android 靠右居中_编译器


离谱的代码中就会看见使用占3个空格的Tab,以上截图举例都还好,没有使用占用3个空格的Tab。

代码前面的对齐都还好处理,很多工具都可以自动排版,像IAR,只要选中需要对齐的代码,Ctrl + T就可以了。但代码后面的注释对齐就不是那么好处理了,如果使用Tab + 空格混合方式,更是容易混乱。


2.2 关于Tab和空格的调查

有人针对 GitHub 上多种语言的热门项目(star 数量高的),分析了代码对齐使用Tab和空格,以及空几格的使用情况。


Android 靠右居中_开源代码_02


Android 靠右居中_Android 靠右居中_03

Android 靠右居中_Source_04


Android 靠右居中_编译器_05

Android 靠右居中_Source_06

Android 靠右居中_编译器_07

关于代码对齐,代码编辑器既然支持Tab,也支持使用空格,所以个人觉得两种方式都可以,只看个人习惯使用那一个了。

代码对齐其实很好处理,选择可以自动对齐的工具对齐就OK了,但在代码后面的注释就不是那么容易对齐了(特别在Tab和空格混用情况下),我个人习惯在代码后面把注释也对齐,所以基本不用Tab符。

个人建议:对齐使用空格符,占2空格或4空格(常用)。其优势:1、方便跨平台使用;2、对齐注释。


2.3 tab设置

一份工整对齐的代码真的很重要!

现状是:一份代码多人维护,多种编辑器的混合使用,使得代码触目惊心,

关键原因是tab和空格键混合使用,加上各种编译器对tab的不同显示!

怎么解决?当然是取消tab,所有tab用4个空格代替!怎么操作?


在编码的时候不用tab键,连续敲4个空格,不可能!带来更差的效率!

统一使用一种编译器,不可能!

那怎么办?

有!就是在你敲一个tab的时候,编译器自动的用4个空格代替!

所以先把你手头上所有编译器的的tab 宽度设置为4,tab自动转化为空格。

Source Insight

打开 [Options]->[Documnet Options] 在右下角[Editing Options]->[Tab width]中填4

打开 [Options]->[Documnet Options] 钩选右下角[Editing Options]->[Expand tabs]


PSPad

打开 [设置]->[程序设置] 选择 [编辑设置] 在[制表符宽度]中填4

打开 [设置]->[程序设置] 选择 [编辑设置] 不钩选 [真实制表符]

 

EditPlus

打开 [Document]->[Tab Indent] 在[Tab]下的编辑框中填4

打开 [Document]->[Tab Indent] 钩选[Insert spaces instead of tab]


Notepad++

打开 [设置]->[制表符设置]->[大小] 填4

钩选 [设置]->[制表符设置]->[用空格替换]

 

UE

打开 [高级]->[配置]->[编辑] 在[制表符宽度]中填4

打开 [高级]->[配置]->[编辑] 钩选[用空格代替制表符]

 

VC

[tools]->[options] -> [tabs]-> [tab size] 填4



[tools]->[options] -> [tabs]-> [indent size] 填4

[tools]->[options] -> [tabs]-> [insert spaces] 选中


3怎么把代码自动排版对齐

看到这里,你可能已经对代码的排版对齐有了深刻的认识,且想把自己的代码作一下调整,那么你是想一行一行的调整么?当然不用了,下面告诉你很好的方法。


3.1先把代码对齐

1)VC方法

假设有test.c

第一步:先用VC打开文件,如下图:


Android 靠右居中_Source_08


第二步:CTRL + A 选中所有的代码。


Android 靠右居中_开源代码_09

第三步:CTRL+F8,看到没有全对齐了。


2)VI方法

如果你没有装VC的话,就使用该方法

第一步:打开test.c文件,这个有人不会吗?上网查查吧!


Android 靠右居中_开源代码_10

第二步:在浏览模式下输入命令“1G=G”

注意:G一定得是大写的,则变为:


Android 靠右居中_Android 靠右居中_11

第三步:最后记住保存该文件

输入“:wq ”命令即可。

 

3)验证是否tab键

 当你把代码对齐之后不要窃喜,因为以上两种方法对齐的时候都是用了tab键。

用UE打开该文件,

选中[视图]->[显示制表符和空格],将看到如下请情况:

“>”表示tab ,“–”表示空格。

Android 靠右居中_编译器_12

可以看出在自动对齐的时候产生了很多tab。

 

3)一次性将tab转换为空格

目前我只发现UE具有该功能。

选中[格式]->[全部制表符转为空格]


Android 靠右居中_开源代码_13


5)手工调整

完成以上处理之后,还需要把代码整个看看,有些地方可能处理有问题,主要是以下几个地方:

l 对开源代码中的部分风格会对齐得不是很理想。

l 一行代码太长的情况,需要手工换行。

 

比如以下代码,开源代码中最喜欢这么搞了。


Android 靠右居中_编译器_14


用VC和VI自动对齐后都会出现以下的情况:


Android 靠右居中_Android 靠右居中_15


可能你希望的是这样的吧,怎么办呢?手工调吧!不知道有没有更好的工具一步到位。


Android 靠右居中_开源代码_16


3.2 Merge设置

现在大功告成了,记住这个时候,立马作个简单验证后提单入库,保证下次从最新版本中得到的是对齐的代码了。

但是入库的时候要千万注意了,必须把空格作为差异入库,否则你辛苦排版好的代码,下次从库里看还是不对齐的。

 

选上 [检视]->[选项]红色圈圈的部分。

Android 靠右居中_开源代码_17

看看没有选中的情况,这样你去入库,merge认为你什么都没有改哦。


Android 靠右居中_Android 靠右居中_18


选中的情况是这样的,没错,就是调整了几个空格而已,把这几个空格入库吧!还犹豫什么呢?

Android 靠右居中_Android 靠右居中_19

3.3 Source Insight高级设置

1)Draft View选中

选中[View] ->[Draft View]

没有选中的情况,本来很对齐的代码,没有tab键,看起来是以下的样子,以为代码本身不对齐。

Android 靠右居中_Source_20

选中的情况,一下子就全对齐了。

Android 靠右居中_开源代码_21

2)怎样让{}和if对齐

 写代码经常这样 

你需要手动把 { } 向左移动四个空格,真郁闷。

在[Options ]->[Documents Options] ,点击 Auto Indent。请选择左边的Smart,并且把右边的两个勾都去掉。即可!


Android 靠右居中_Source_22

Android 靠右居中_Source_23