中兴开发者社区

中兴开发者社区是一站式云端产品研发社区,为开发者和项目提供项目管理、开源协作、代码托管、持续交付、资源服务、技术交流等服务.让开发更简单,让创新更便捷!...

干货| 关于代码对齐的探讨

点击上方“中兴开发者社区”,关注我们

每天读一篇一线开发者原创好文

640?wx_fmt=png&wxfrom=5&wx_lazy=1

1 为什么要代码对齐?

程序员的工作并不是仅仅编写程序,程序只是实现业务的一种方式而已。但是能够将实现业务的方式,变得艺术起来,就不是那么简单了。什么叫艺术呢?艺术并不是复杂的,艺术反而是简单的、清晰的、明了的。如同我们看到一幅画,就能够感受到美,这就是所谓的艺术最浅层的体现。在程序里,我认为艺术就是,编写简单清晰、明了的代码。说的再细一点,就是代码一定要排列的整齐,像写文章、设计平面作品一样。最起码保持等号的对齐,保持变量命名的规范。如果编程水平高一些,可以用一些更为简便的方法,来更高快速更快捷的实现功能。再其次就是实现一个功能的各个模块之间,要像搭积木一样,互相独立,然后能够保持模块功能重用性。每一块合规合矩的积木,最后才能搭建出一座美丽的宫殿。

代码像文章一样,总是要维护的。你是否还记得你看别人代码时候那种无名的烦躁心情。因为你看到了乱糟糟的代码,看到了没有注释的代码。你认为这一定是一个傻瓜写的代码。可是你自己写代码的时候,却沉浸在自己实现功能的成就感里,完全忘记了,多打几个空格,多摁几次tab键。

当你按几次空格,为了给代码的等号对齐。同事在一旁问你是不是有强迫症,你完全可以说,我有强迫症,并引以为豪。


2 代码对齐的方式

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


2.1 Tab和空格的区别

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

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

0?wx_fmt=png

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

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


2.2 关于Tab和空格的调查

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

0?wx_fmt=png


0?wx_fmt=png

0?wx_fmt=png


0?wx_fmt=png

0?wx_fmt=png

0?wx_fmt=png

关于代码对齐,代码编辑器既然支持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打开文件,如下图:

0?wx_fmt=png

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

0?wx_fmt=png

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


2)VI方法

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

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

0?wx_fmt=png

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

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

0?wx_fmt=png

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

输入“:wq ”命令即可。

 

3)验证是否tab键

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

用UE打开该文件,

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

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

0?wx_fmt=png

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

 

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

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

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

0?wx_fmt=png

5)手工调整

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

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

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

 

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

0?wx_fmt=png

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

0?wx_fmt=png

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

0?wx_fmt=png

3.2 Merge设置

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

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

 

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

0?wx_fmt=png

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

0?wx_fmt=png

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

0?wx_fmt=png

3.3 Source Insight高级设置

1Draft View选中

选中[View] ->[Draft View]

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

0?wx_fmt=png

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

0?wx_fmt=png

2)怎样让{}和if对齐

 写代码经常这样 

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

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

0?wx_fmt=png

640?wx_fmt=jpeg

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/O4dC8OjO7ZL6/article/details/78975034
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭