| begin
…
Caption := “Delphi”;
…
end;
这样会出现什么问题呢?因为这条语句夹在众多语句之中,所以当程序出现问题时很难搞明白是怎么回事。
3. 过程和函数
3.1 命名与格式
(1) 过程和函数的名称应当由一个或多个完整的单词组成。名称的首字母应当大写,其后每个单词的首字母也应当大写,其它字母则小写。如果名称过长,可以考虑使用单词的缩写,但是要使用常用的缩写,比如:Tmp、Str。对于使用英文简写的单词或词组要全部使用大写字母,比如:ID、UTS。下面是几个正确的写法:GetUserID、InputPassword、FindUserListFile、ImportUserNameFromStr。
(2) 过程或函数的名称应当能够简单的表示该过程或函数的行为。使用动词和名词为过程和函数命名,动词表示行为,而名词表示行为的对象或目的。根据惯例,设置输入参数值的过程名要以Set为前缀,读取数值的函数名要以Get为前缀。下面是几个正确的命名:SaveToFile、ReadFromFile、SetUserID、GetUsersNumber。
3.2 形参
(1) 格式:形参的排列要按照日常惯用的顺序,比如:姓名、性别、年龄。而且在此基础上要尽可能地把同一类型的形参归并在一起。例如:
procedure SetUserInformation(Name, ID: string; Age: integer);
(2) 命名:所有的形参的命名要能够表达出该形参的用途。在合适的情况下,形参的名称最好以大写字母A为前缀。
(3) 读写规则:Delphi中有const和var形参,分别表示了对形参的读写控制。在形参列表中最好能够明确表示。
3.3 变量
(1) 使用规则:在程序的开始阶段要对所有的变量赋予明确的数值。普通类型变量要选择合适的数值;类的实例如果此时不需要创建,那么就赋值为NIL。所以,在主程序、过程或函数中要明确程序的初始化部分和程序的功能部分。
(2) 全局变量:在程序设计中,应该尽可能的避免使用全局变量。因为在程序的很多地方有可能修改全局变量的值,如果缺乏良好的管理机制,这将会使程序变得十分脆弱。而实际上很难在一个成百上千行的程序中对全局变量进行有效的监控。如果要使用全局变量,那么就尽可能在单元文件(.pas)的实现部分声明该变量。这样该变量就只在此文件中有效,而不会被其它文件访问。将全局变量放在单元文件的接口部分是很危险的。
(3) 局部变量:局部变量用于例程内部,遵循其它变量的命名规则。而且应该在例程的入口处立即初始化变量。
3.4 类型
大小写规则:因为类型标志符是保留字,所以应该全部小写。对于引用的其他公司、组织或个人的数据类型则尽可能地保留原样。
3.5 自定义类型
(1) 命名:对于自定义数据类型要以大写字母T为前缀,这样可以分清自定义数据类型和变量。名称的其它部分的命名遵守命名的一般惯例。
(2) 枚举类型:枚举类型的名称应该能够代表该枚举类型的用途。枚举类型的标志符列表的前缀应该包含两个或三个小写字母,以彼此关联,这些字母依次是组成枚举类型名称的单词的首字母。例如:
TAlign = (alNone, alTop, alBottom, alLeft, alRight, alClient, alCustom);
4. 面向对象相关
4.1 类的命名与格式
首先,类的名称应当能够清晰表达类的用途;其次,类的名称之前要以大写字母T开头,以表示这是一个自定义数据类型。在Delphi中,所有的类的祖先类都是TObject,在定义类中要明确表示出类的祖先类。也就是说,即使该类的祖先类是TObject,也要表明(在Delphi中如果不写明类的祖先类,那么就默认其祖先类为TObject)。
例如:
type
TCar = class(TObject)
private
…
protected
…
public
…
end
类的实例的名称可以与类名相同,如果只有一个实例时就使用没有前缀T的类名;如果有多个实例,那么就另外在前面添加其他合适的单词。
在一个单元文件中只可以定义一个类,而且单元文件的名称要与去掉前缀T的类名相同。如果在一个单元文件中定义了多个类,那么一个类就可以直接访问另一个类的私有字段或受保护字段,而不管该字段是否定义为只读。单元文件使用类的名称的目的是我们可以通过文件名直接察觉到类的大概,这样便于使用。
4.2 字段
字段的命名与变量的命名遵从同样的规则,但是要加上大写字母F为前缀,以表示这是一个字段。另外,字段名称应该为名词,而且要注意单词复数的使用(数组字段应当是复数,表示集合含义的字段也应该使用复数名称)。
所有的字段必须为私有,这样就可以通过属性来决定该字段在类的作用域之外的访问属性。这样组的目的是保证类的封装性。
字段名称的排列要参照字段的含义。参考名片管理系统,对一张名片我们首先关心的是姓名,然后是性别,然后是年龄,然后是各种联系方式,如果更细致一点就要考虑生日、家庭成员等。于是我们可以简单的定义类:
type
TBusinessCard = class(TObject)
private
FName: string;
FSex: string;
FAge: integer;
FEmail: string;
…
public
…
end;
上一页 [1] [2] [3] [4] 下一页 |