一、规范书写习惯;
至于书写格式的规范,到现在为止应该都没有一个统一的标准;其实,你根本不需要去理会什么标准,只要在一个工程里,书写风格统一就很好了;但是首先要注意代码行的缩进;也就是不要所有的代码都顶头。例如:
if xxx then
a:=0;
像这种书写习惯是非常不好的,我们想象一下,如果一个项目中有上万行代码,而你所有的代码完全没有缩进的话,你该怎么去管理这些源程序呢?
if xxx then
a:= 0;
这样最少应该比上边的好看多了;在DELPHI里,一般一次缩进是2空格,当然这只是一个约定而已,你也可以想C中缩4空格也是可以的,但是最好缩进位置不要太大,否则的话也是非常难看的。
二、选择合适的语句块:
我们看一个例子:
if Value = 1 then
...
else if Value = 2 then
...
else if Value = 3 then
...
...
我们看到,这个IF……ELSE语句有多个判断,这样的话我们完全可以选择一个多分支语句来替代这个IF语句:
case Value of
1: ...
2: ...
3: ...
....
end;
这样的话,我想在感觉上要好很多了。还有,我不推荐使用With语句,当With语句多的时候是会破坏代码的可读性的。
另外,我还想说一下,在看VCL的代码会有下面的写法:
if xxx then
begin
end
else
begin
end;
个人认为,begin...end也缩进更好,因为那样可以更突出if和else的对应关系。还有,最好不要写成:
if xxx then begin
end;
这样,如果这样的话,当IF条件过长的话,往往会很难发现与END对应的BEGIN的正确位置。
我这里说的是这种:
if ((Pack[n].ObjectVersion = 0) and (TPacketHeader(Pack[n]).Flags = 2)) and ((NewRM.HeaderMDPR[Map[ i ].Dest].MIMEType = 'audio/x-pn-realaudio') and ( (Pack[n].Timestamp - Map[ i ].Time >= 1857) or (Map[ i ].Time = $FFFFFFFF) ) or (NewRM.HeaderMDPR[Map[ i ].Dest].MIMEType = 'video/x-pn-realvideo') and ( (Pack[n].Timestamp - Map[ i ].Time >= 83) or (Map[ i ].Time = $FFFFFFFF) )) then