励使用全局变量。在确实需要使用全局变量的时候,必须把全 局变量限制在需要的环境内,如:一个全局变量可能只在单元的 Implementation部分是全局的,所以必须把其定义在该部分内。被多个单 元使用的全局数据应该被移入一个公共模块中。 E,全局变量可以在定义时直接初始化为某一个值。注意:所有的全局变量 将自动进行零初始化,所以,不要将全局变量初始化为空值,如0, nil, '',
6
Unassigned。零初始化的全局变量在可执行文件中不占用空间,非零初始 化的全局变量则在可执行文件中占空间。 F,变量的命名规则参见本文档后面的命名规则项。 2.3.4 实现区 A,事件、过程、函数应按主题分类归集在一起
,每个主题开始的第一行用 {}注释该类主题。约定归类方法如下:同一个元件的事件应归集在一 起,被事件调用或与之相关系的函数或过程应紧跟在该事件之后,函 数、过程、方法之间如存在调用关系也应归集在一起,除非该函数、过 程被多处调用。被多处调用的单元内部函数、过程应归集在单元的公共 过程主题内。可以自定义归类方法,比如按实现功能归类,但如归类方 法不同于本约定的,应在所有主题之前用{}注释说明归类方法。 B,每一个事件、方法必须在其代码前用{}注释说明名称、描述、参数含 义、创建时间、作者、更新人、更新时间。在事件、方法内部不同含义 的算法或不同主题的代码间空一行,每段算法或主题的开始用{}注释算 法或主题的目的。关键性的算法行应在行末用//注释算法目的。事件、 方法内部的变量定义时必须遵行2.3.3约定的变量区规范。 C,SQL 语句书写规则:在SQL语句中,所有SQL保留字统一用大写,所有 字段名以及数据表名全部用小写,SELECT, FROM, WHERE, ORDER BY顶格起行,各子句中要求每个字段或每个条件或每个关联单独起 行,并缩进对齐,缩进两格。示例如下: strMasterSql := ' SELECT preload.*, ' + ' codelib.codename vesselname' + ' blstatus = CASE blstatusid WHEN “1” THEN “订舱” ' + ' WHEN “2” THEN “配航线” ' + ' ELSE “其他” ' + ' END; ' + ' FROM preload ' + ' LEFT JOIN codelib ' + ' ON codelib.codecd = preload.vesselcd ' + ' AND codelib.classid = "03" '; strMasterFilter := ' WHERE preloadpanycd = :companycd ' + ' AND preload.idno = :idno '; strMasterOrder := 'ORDER BY preloadno'; 注意:CASE...WHEN...THEN...ELSE...END等SQL语句的关键字用大写。 D,代码中用到数据库字段名称的地方,统一用小写。 E,元件本身的属性、事件名,要按照DELPHI自动提示的格式写。
2.4
Object Pascal 语法约定 2.4.1 语法杂项: A,运算符前后要有各一个空格。
7
B,在开始圆括号和后一个字符,以及结束圆括号和上一个字符中不出现空 格。不要在语句中出现不必要的括号。如 if (I=42) then 中,括号就是不 必要的。 C,Object Pascal 语言的保留字和关键字总是小写。 D,一般不建议使用Variant和OleVariant,除非数据类型只有在运行期才能 确定或获知的。OleVariant常常用来做基于COM的程序:Auutomation和 ActiveX控制,Variant基于non-COM的程序。 E,代码中不可使用Real类型,对于浮点数,应当使用Double类型。 F,定义对象特性时,应当使用读写方法来访问。 2.4.2 过程与函数 A,形参的顺序主要要考虑寄存器调用规则,最
常用的参数应当作为第一个 参数,按使用频率依次从左到右排。 输入参数应当位于输出参数之前。 范 围
大 的 参 数 应 当 放 在 范 围 小 的 参 数 之 前 , 如 SomeProc(Acountry, Astate, ACity) IDE自动生成的事件句柄,参数顺序不必依此约定。 B,所有的常量参数应当标以Const标记。 C,为避免命名冲突,除调用公共模块的例程外,调用其他模块的过程、函 数时应当在例程名前加该例程所在的单元名。 D,