本站动态:

上一篇 | 这是最后一篇日志下一篇
程序开发 订阅所有【程序开发】的日志

代码排版中的缩进和行长

大家都知道,代码的排版虽然不影响代码的编译和程序的运行,但是对于开发人员来说,它同样很重要。当我们看到排版整齐质量又高的代码的时候,我们会像欣赏艺术品一样去欣赏它,而如果代码排版混乱,哪怕思想再好的代码也会让你看了心烦。本文主要和大家探讨一下代码排版中的缩进和行长问题。

代码的缩进主要使用两个字符:tab键的缩进(\t)和空格。而对于到底使用tab还是空格,目前基本上没有形成统一的说法。使用tab的好处是需要缩进的时候,程序员只要敲一下tab键即可,而且多数程序员(包括我)都比较习惯使用tab。缺点是:tab的宽度是可变的。正常情况下,一个tab的长度是8个普通字符的宽度,而习惯上,我们认为用4个普通字符的宽度作为tab的长度是比较理想的,大多数代码编辑器都可以设定tab的长度。而空格除了缩进比较麻烦(得敲多个空格键),在对齐上比较容易。

另外还有一个问题,如果使用tab,在不同的编辑下显示的效果不同。比如在VC下排版得很好,可是用source insight或者Clear Case里的Merge工具打开,发现排列不整齐了。这个事情真的很头疼,所以有人(公司)就直接规定不许使用tab,只使用空格缩进。不过这样做对开发者来说确实是烦人的事情。

本文提供一个想法,即要有tab缩进的便利性,又要不影响对齐。方法如下:
1、行首的缩进统一使用tab,不能使用空格代替(这样不过设置tab的宽度是多少,都能对齐)
2、有效代码开始后如果还想缩进对齐(如变量的类型和变量名直接),不要使用tab,而使用空格。例如:
typedef struct
{
\tint\s\s\s\s\s\s\s\smember1;
\tfloat\s\s\s\s\s\s\smember2;
} typeName;

int function()
{
\tint\s\s\s\s\s\s\s\s\s\sa;
\tmydefinedtype\s\s\sbbb;
}
上面的\t表示tab缩进,\s表示空格。如果使用等宽的字体,不管\t用几个字符的宽度,上面的代码都能对齐。

对你常用的代码编辑器做如下设置:
1、将代码编辑器的字体设置为等宽字体,如Courier New或比较经典的Fixedsys
2、将代码编辑器的缩进宽度设为4个字节(可选)

这样你的代码就能够时刻对齐了。

再来说说行长的问题:
很多文章或编程书籍都推荐代码一行的长度不要超过80(有的也说75)个字符,如果超过就需要换行,然后说了一堆换行的规则。他们说的换行规则我都赞同,不过我觉得一行不超过80个字符这一条可以改改了。
为什么他们推荐一行的长度不超过80个字符?我想主要有以下几点原因:
1、如果将代码打印,太长的代码会打印不下。
2、这个说法应该在很早的时候就提出来的了,当时的显示器和现在的没法比,当时的显示器分辨率可能只有800*600,甚至只有640*480,如果代码写得太长就会出现水平滚动条,这样很麻烦。
不过对于现在的我们来说:
1、我们的代码基本上不会用来打印,最多放到网页上。
2、我们现在的显示器分辨率比较高,甚至有很多宽屏的,最小的水平分辨率也能达到1024个像素。
我们编写的代码首先应该考虑让自己写得顺手,自己看到舒服,其次再是如果在别人的机器上,别人看你的代码的时候,他们也能看得很舒服,最后再考虑如果放到网页上会显示成什么样。

所以我想说的是:我们不用太去在意80个字符长度的约定,我们可以适当加长。不然老是看到一句代码分成好几行,也不会感觉太美观。

以上只是我个人的看法,没有所谓的对与错,适合自己的就是最好的,不用去管太多的陈旧的条条框框。

[本日志由 shosh 于 2010-04-26 00:04 AM 编辑]
文章来自: Shosh原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 0 | 引用: 0 | 查看次数: 275
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭