xx软件公司产品开发代码规范-8-9
8、实现区规范
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 preload.companycd = :companycd ' +
' AND preload.idno = :idno ';
strMasterOrder := 'ORDER BY preloadno';
注意:CASE...WHEN...THEN...ELSE...END语句的写法不同。
D、代码中用到数据库字段名称的地方,统一用小写。
E、元件本身的属性、事件名,要按照DELPHI自动提示的格式写。
9、Object Pascal 语法约定
1)、 语法杂项:
A、运算符前后要有各一个空格。
B、在开始圆括号和后一个字符,以及结束圆括号和上一个字符中不出现空格。不要在语句中出现不必要的括号。如 if (I=42) then 中,括号就是不必要的。
C、Object Pascal 语言的保留字和关键字总是小写。
D、一般不建议使用Variant和OleVariant,除非数据类型只有在运行期才能确定或获知的。OleVariant常常用来做基于COM的程序:Auutomation和ActiveX控制,Variant基于non-COM的程序。
E、代码中不可使用Real类型,对于浮点数,应当使用Double类型。
F、定义对象特性时,应当使用读写方法来访问。
2)、过程与函数
A、形参的顺序主要要考虑寄存器调用规则,最常用的参数应当作为第一个参数,按使用频率依次从左到右排。输入参数应当位于输出参数之前。范围大的参数应当放在范围小的参数之前,如SomeProc(Acountry, Astate, ACity),IDE自动生成的事件句柄,参数顺序不必依此约定。
B、所有的常量参数应当标以Const标记。
C、为避免命名冲突,除调用公共模块的的例程外,调用其他模块的过程、函数时应当在例程名前加该例程所在的单元名。
D、除非确实需要在使用前再初始化,否则例程的内部变量应当在例程的入口处立即初始化。