while 循环。如果需要的话,应当使用循环条件退出循环。所 有对 while 循环进行初始化的代码应当位于 while 入口前,且不要被无关的语句隔开。任何业 务的辅助
工作都应在循环后立即进行。
(4). for 语句
如果循环次数是确定的,应当用 for 语句代替 while 语句。
(5). repeat 语句
repeat 语句类似于 while 循环,且遵循同样的规则。
(6). with 语句
(1) 概述
with 语句应小心使用。要避免过度使用 with 语句,尤其是在 with 语句中使用多个对象或记 录。例如: with Record1,Record2 do
这些情况很容易迷惑编程人员,且导致调
试困难。
(2) 格式
with 语句也遵循本章关于命名和缩进的规则。
7). 结构化异常处理
(1). 概述
异常处理主要用于纠正错误和保护资源。这意味着,凡是分配资源的地方,都必须使用 try...finally 来保证资源得到释放。不过,如果是在单元的初始/结束部分或者对象的构造器/ 析构器中来分配/释放资源则例外。
(2). try...finally 的用法
在可能的情况下,每个资源分配应当与 try...finally 结构匹配,例如,下面代码可能导致错 误: SomeClass1 := TSomeClass.Create; SomeClass2 := TSomeClass.Create; try { do some code } finally SomeClass1.Free; SomeClass2.Free; end;
上述资源分配的一个安全
方案是:
SomeClass1 := TSomeClass.Create; try SomeClass2 := TSomeClass.Create; try { do some code } finally SomeClass2.Free; end; finally SomeClass1.Free; end;
(3). try...except 的用法
如果你希望在发生异常时执行一些任务,可以使用 try...except。通常,没有必要为了简单 地显示一个错误信息而使用 try...except,因为 Application 对象能够自动根据上下文做到这 一点。如果要在子句中激活默认的异常处理,可以再次触发异常。
(4). try...except...else 的用法
不鼓励使用带 else 子句的 try...except,因为这将阻塞所有的异常,包括你没有准备处理 的异常。
3.命名规范 命名规范
3.1.过程 过程(Procedure)与函数 与函数(Function) 过程 与函数
1).命名 命名
过程与函数名应当有意义。进行一个动作的过程最好在名称前加上表示动作的动词为前缀。例 如: procedure FormatHardDrive; 设置输入参数值的过程名应当以 Set 为其前缀,例如: procedure SetUserName; 获取数值的过程名应当以 Get 为其前缀,例如: function GetUserName:string;
2).形参 形参
所有形参的名称都应当表达出它的用途。如果合适的话,形参的名称最好以字母 a 为前缀, 例如: procedure SomeProc(aUserName:string; aUserAge:integer); 当参数名与类的特性或字段同名时,前缀 a 就有必要了。
3).命名冲突 命名冲突
当两个单元中含有相同名称的过程时, 如果调用该过程, 实际被调用的是 Uses 子句中较后出 现的那个单元中的过程。为避免这种情况,可在方法名前加想要的单元名,例如: SysUtils.FindClose(SR); 或 Windows.FindClose(Handle);
3.2.变量 变量(Variable) 变量
变量的名称应当能够表达出它的用途。