Delphi 代码标准文档
1.前言 前言
本
文档主要是为 Delphi 开发人员提供一个源代码书写标准,以及程序和文件的命名标准,使 他们在编程时有一致格式可遵循。这样,每个编程人员编写的代码能够被其他人理解。
本
文档不包含用户界面标准。用户界面标准是独立于其他标准的,并且同样是重要的。
2.源程序书写规范 源程序书写规范
2.1.通用源代码格式规则 通用源代码格式规则
1). 缩进
缩进就是每级间有两个空格。不要在
源代码中放置制表符。这是因为,制表符的宽度随着不同 的设置和代码管理实用
程序(打印、文档及版本控制等)而不同。 通过使用 Tools|Environment 菜单,在 Environment Options 对话框的 General 页上, 不要选中 Use Tab Character 和 Optional Fill 复选框,这样,制表符就不会被保存。
2). 边距
边距设置为 80 个字符。源代码一般不会因写一个单词而超过边距,但本规则比较灵活。只要 可能,长度超过一行的语句应当用逗号或运算符换行。换行后,应缩进两个字符。
3). begin...end 语句
begin 语句必须单独占一行。例如,下面第一行是错误的,而第二行正确: for i:=0 to 10 do begin // 错, begin 与 f o r 在同一行 for i:=0 to 10 do // 对, begin 在另外一行中 begin 本规则的一个特殊情况是,当 begin 为 else 语句的一部分时,例如: if some statement = then begin ...
end else begin Some Other Statement; end; 注意: end 语句总单独一行。 begin 不为 else 语句的一部分时, 当 相应的 end 语句与 begin 语句的缩进量相同。
4).注释 注释
我们通常使用“{...}”类型的块注释,以前的“(*...*)”类型的块注释用于临时注释掉暂不使用 的代码,从 Delphi 2 开始支持“//”行注释,如果决定不在支持
Delphi 2.0 以下的版本,可以 使用“//”注释。
2.2.Object Pascal 语句格式语句书写规范与用法
1). 括号
在左括号与下一字符之间没有空格。同样,右括号与前一字符也没有空格。下面的例子演示了 正确与不正确的空格。 CallProc( Aparameter ); // 错! CallProc(Aparameter); // 正确!
不要在语句中包含多余的括号。在源代码中,括号只有在确实需要时才使用。下面的例子
演示 了正确与不正确用法: if (I=42) then // 错,括号是多余的 if (I=42) or (J=42) then // 正确,必须使用括号
2). 保留字和关键字
Object Pascal 语言的保留字和关键字总是完全的小写。下面是 Delphi and begin constructor do except finally if initialization array case destructor downto exports for implementation inline as class dispinterface else file function in interface 保留字
列表:
asm const div end finalization goto inherited is
label not out property resourcestring string try uses xor published
library object packed raise set then
type var private automated
mod of procedure record shl threadvar unit while protected
nil or program repeat shr to until with public
3). 过程和函数
(1). 格式
过程名应当以大写字母开始,且大小写交错以增加可读性。下面是一个不正确的写法: procedure thisisapoorlyformattedroutinename;
改成这样写就对了: procedure ThisIsMuchMoreReadableRoutineName;
(2). 形参
(1) 格式
只要可能,同一类型的形参应当归并在一起: procedure Foo(Param1,Param2,Param3:Imteger;Param4:string);
(2) 参数顺序
形参的顺序主要要考虑寄存器调用规则。最
常用的参数应当作为第一个参数,按使用频率依次 从左到右排。输入参数位于输出参数之前。范围大的参数应当放在范围小的参数之前。例如: SomeProc(aPlanet, aContinent, aCountry, aState, aCity). 有些则例外。例如,在事件处理过程中,TObject 类型的 Sender 参数往往是第一个要传递 的参数。
(3) 常量参数
要使记录、数组、短字符串或接口类型的参数不