hile 循环,且遵循同样的规则。
(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) 变量
变量的名称应当能够表达出它的用途。循环控制变量常常为单个字母,诸如 I 、J 或 K 。也 可以使用更有意义的名称,例如 UserIndex。布尔变量名必须能清楚表示出 True 和 False 值 的意义。
1). 局部变量
局部变量遵循其他变量的命名规则。
2). 全局变量
全局变量以大写字母“G”打头,并遵循其他变量的命名规则。
3.3.类型 类型(Type) 类型
3.3.1.一般类型 一般类型
1). 枚举型
枚举类型名必须代表枚举的用途。名称前要加 T 字符作为前缀,表示这是个数据类型。枚举类 型的标识符
列表的前缀应包含 2 - 3 个小写字符,来彼此关联。例如: TSongT