点击上方“中兴开发者社区”,关注我们
每天读一篇一线开发者原创好文
1 为什么要代码对齐?
程序员的工作并不是仅仅编写程序,程序只是实现业务的一种方式而已。但是能够将实现业务的方式,变得艺术起来,就不是那么简单了。什么叫艺术呢?艺术并不是复杂的,艺术反而是简单的、清晰的、明了的。如同我们看到一幅画,就能够感受到美,这就是所谓的艺术最浅层的体现。在程序里,我认为艺术就是,编写简单清晰、明了的代码。说的再细一点,就是代码一定要排列的整齐,像写文章、设计平面作品一样。最起码保持等号的对齐,保持变量命名的规范。如果编程水平高一些,可以用一些更为简便的方法,来更高快速更快捷的实现功能。再其次就是实现一个功能的各个模块之间,要像搭积木一样,互相独立,然后能够保持模块功能重用性。每一块合规合矩的积木,最后才能搭建出一座美丽的宫殿。
代码像文章一样,总是要维护的。你是否还记得你看别人代码时候那种无名的烦躁心情。因为你看到了乱糟糟的代码,看到了没有注释的代码。你认为这一定是一个傻瓜写的代码。可是你自己写代码的时候,却沉浸在自己实现功能的成就感里,完全忘记了,多打几个空格,多摁几次tab键。
当你按几次空格,为了给代码的等号对齐。同事在一旁问你是不是有强迫症,你完全可以说,我有强迫症,并引以为豪。
2 代码对齐的方式
是Tab?还是空格? 使用空格又是几个空格?
2.1 Tab和空格的区别
Tab和空格其实只是两个不同的符号,但在编程对齐中的意义却大不一样。一个Tab可以占空个格的位置,但一个空格就只有一个空格的位置。
在Keil开发环境中可以显示出Tab和空格符,不妨看一下在Tab和空格交替编辑下,原本使用占2空格Tab符号,实际在4隔空Tab下看代码(和注释)就凌乱了。
离谱的代码中就会看见使用占3个空格的Tab,以上截图举例都还好,没有使用占用3个空格的Tab。
代码前面的对齐都还好处理,很多工具都可以自动排版,像IAR,只要选中需要对齐的代码,Ctrl + T就可以了。但代码后面的注释对齐就不是那么好处理了,如果使用Tab + 空格混合方式,更是容易混乱。
2.2 关于Tab和空格的调查
有人针对 GitHub 上多种语言的热门项目(star 数量高的),分析了代码对齐使用Tab和空格,以及空几格的使用情况。
关于代码对齐,代码编辑器既然支持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打开文件,如下图:
第二步:CTRL + A 选中所有的代码。
第三步:CTRL+F8,看到没有全对齐了。
2)VI方法
如果你没有装VC的话,就使用该方法
第一步:打开test.c文件,这个有人不会吗?上网查查吧!
第二步:在浏览模式下输入命令“1G=G”
注意:G一定得是大写的,则变为:
第三步:最后记住保存该文件
输入“:wq ”命令即可。
3)验证是否tab键
当你把代码对齐之后不要窃喜,因为以上两种方法对齐的时候都是用了tab键。
用UE打开该文件,
选中[视图]->[显示制表符和空格],将看到如下请情况:
“>”表示tab ,“–”表示空格。
可以看出在自动对齐的时候产生了很多tab。
3)一次性将tab转换为空格
目前我只发现UE具有该功能。
选中[格式]->[全部制表符转为空格]
5)手工调整
完成以上处理之后,还需要把代码整个看看,有些地方可能处理有问题,主要是以下几个地方:
l 对开源代码中的部分风格会对齐得不是很理想。
l 一行代码太长的情况,需要手工换行。
比如以下代码,开源代码中最喜欢这么搞了。
用VC和VI自动对齐后都会出现以下的情况:
可能你希望的是这样的吧,怎么办呢?手工调吧!不知道有没有更好的工具一步到位。
3.2 Merge设置
现在大功告成了,记住这个时候,立马作个简单验证后提单入库,保证下次从最新版本中得到的是对齐的代码了。
但是入库的时候要千万注意了,必须把空格作为差异入库,否则你辛苦排版好的代码,下次从库里看还是不对齐的。
选上 [检视]->[选项]红色圈圈的部分。
看看没有选中的情况,这样你去入库,merge认为你什么都没有改哦。
选中的情况是这样的,没错,就是调整了几个空格而已,把这几个空格入库吧!还犹豫什么呢?
3.3 Source Insight高级设置
1)Draft View选中
选中[View] ->[Draft View]
没有选中的情况,本来很对齐的代码,没有tab键,看起来是以下的样子,以为代码本身不对齐。
选中的情况,一下子就全对齐了。
2)怎样让{}和if对齐
写代码经常这样
你需要手动把 { } 向左移动四个空格,真郁闷。
在[Options ]->[Documents Options] ,点击 Auto Indent。请选择左边的Smart,并且把右边的两个勾都去掉。即可!