delphi代码编写规范
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
预付费组delphi代码编写规范
目录
1. 概述 (1)
2. 通用源代码格式规则 (1)
3. 过程和函数 (2)
4. 变量 (2)
4.1. 变量命名及格式 (2)
4.2. 类型 (3)
5. 类 (4)
5.1. 命名及格式 (4)
5.2. 类中的属性访问(这点可以考虑是否加入) (5)
6. 结构化异常处理 (5)
7. 元件类型 (5)
7.1. 元件实例的命名规则 (5)
8. 窗体与对话框类型 (6)
9. 数据模块类型 (7)
10. 文件 (7)
1.概述
本规范是根据网上一些资料整理而来,为了实用,只列出了一些重点。
2.通用源代码格式规则
1). 缩进
缩进就是每级间有两个空格。一般不要在源代码中放置制表符。这是因为,制表符的宽度随着不同的设置和代码管理实用程序(打印、文档及版本控制等)而不同。当遇到begin 或进入判断、循环、异常处理、with语句、记录类型声明、类声明等的时侯增加一级,当遇到end或退出判断、循环、异常处理、with语句、记录类型声明、类声明等的时侯减少一级。
2). 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 语句的缩进量相同。
3).注释
我们通常使用“{...}”类型的块注释,用“//”行注释。每个函数、过程和全局变量(包括模块内全局变量)都必须有注释,函数、过程的参数都必须说明。
4).空格(这个是否可以取消)
在操作符及逻辑判断符号的两端一般要添加空格,例如:I := I + 1;,a and b 等,但添加括号时不需要空格。例如:if ( a > b ) then //错误的用法
If (a > b) then //正确的用法
又例如:procedure Test(Param1: integer; Param3: string);
3.过程和函数
(1). 格式
过程名应当以大写字母开始,且大小写交错以增加可读性。下面是一个不正确的写法:procedure thisisapoorlyformattedroutinename;
改成这样写就对了:
procedure ThisIsMuchMoreReadableRoutineName;
(2). 形参
所有参数必须是有意义的;并且当参数名称和其它属性名称重了的时候,加一个前缀‘A’, 例如:
procedure SomeProc(AUserName: string; AUserAge: integer);
4.变量
4.1. 变量命名及格式
(1)命名前缀(这点可以考虑是否要加)
字符串类型 s ??
Int i
Double d
Datetime dt
Boolean b
TDataset ds
TQuery qry
……
如: var sUsrName : string;
循环控制变量通常使用单一的字符如:i, j, 或 k。另外使用一个有意义的名字例如:UserIndex ,也是准许的。
首先所有变量必须起有意义的名字,使其它组员可以很容易读懂变量所代表的意义,变量命名可以采用同义的英文命名,可使用几个英文单词,但每一单词的首字母必须大写。例如: var sWriteFormat::string;
同时对于一些特定类型可采用一定的简写如下:
指针类型 P
纪录类型 Rec
数组类型 Arr
类 Class
(2). 全局变量
全局数据如果将由许多单元使用,就应移动到一个公用单元里被所有对象使用。全局数据可在声明时直接初始化为一个值。
尽量不使用全局变量,如必须使用全局变量则必须加前缀‘G’,同时应在变量名称中体现变量的类型。例如:
GPRecUserCount: point;//名称为UserCount的全局变量,其类型为指向一结构的指针但是在模块内部可以使用全局变量。
所有模块内全局变量必须用‘F’为前缀。如果几个模块之间需要进行资料交换,则需要通过声明属性的方法来实现。例如:
type
TFormOverdraftReturn = class(TForm)
private
{ Private declarations }
F_sUserName: string;
F_iUserCount: Integer;
Procedure SetUserName(Value: string);
Function GetUserName: string;
public
{ Public declarations }
property UserName: string read GetUserName write SetUserName;
property UserCount: Integer read FuserCount write FuserCount;
end;
4.2. 类型
(1).大小写规则
类型标识符是保留字,应当全部小写。Win32 API 类型常常全部大写,并且遵循诸如Windows.pas或其他API单元中关于特定类型名的规则。对于其他变量名,在加入前缀的情况下第一个字母应大写,其他字母则大小写交错。下面是一些例子:
var
sMyString: string; // 保留字