Object Pascal Style Guide - By Charles Calvert (对象Pascal编码风格向导 - 译:Tommy Tong) 我们承认许多好的已经确定的工作室或个人,拥有他们自己的和本文里所说的不同的编程习惯, 但是,我们强烈建议你使用一个工具将你的代码转换为Borland风格的代码,然后再提交给Borland,Project JEDI或其他任何公开的源代码知识库。我们不想强迫你改变你的习惯,但我们坚持所有同Borland产品一起工作的的代码遵循本文描述的习惯。 对象Pascal是一种优美的设计语言。较强的可读性就是它的一个优点。本文设计的标准将增强对象Pascal代码的可读性。当开发人员遵从本文展现的这些简单的习惯,他们也将成为标准,这将有益于所有的Delphi开发人员使用统一的易读的代码风格。执行这些标准的努力将增加开发人员的源代码的价值,特别是在维护和调试循环阶段。 尽管我们相信并且赞美本文所宣扬的风格,但我们没有必要支持它,因为它本身是正确的而其它的则是错误的。然而我们相信绝大多数开发人员遵从的标准是有它的功效的,所以我们仍然支持并维护该风格。人类的大脑总在适应标准,并且找寻方法去快速组织所熟悉的模式,从而快速而有效地理解其含义。正是因这种要求而建立的标准将使大量的人尽可能容易的阅读代码。如果在初次使用我们的指导方针是感到陌生,那么我们请你坚持一会儿,你会发现你也变得习惯了。或者,如果你愿意,你也可以保持你自己的风格,并通过一个遵从我们标准的程序来转换,然后你可以将你的代码提交给Borland或其他知识库了。 一些文本编辑器,象Visual SlickEdit可以帮助你按照一定的风格来格式化你的代码。一个免费的由Egbert van Nes开发的格式化程序可以在以下的连接获得: http://www.slm.wau.nl/wkao/delforexp.html另一个针对Delphi的商业化程序是CrackerJax: http://www.kineticsoftware.com/html/products.html
<delphi 5 开发人员指南>里有一章6.2.4 变量 1. 变量的命名与格式 变量的名称应当能够表达出它的用途。 循环控制变量常常为单个字母,诸如I、J或K。也可以使用更有意义的名称,例如U s e r I n d e x。布 尔变量名必须能清楚表示出Tr u e和F a l s e值的意义。 2. 局部变量 局部变量用于例程内部,遵循其他变量的命名规则。 如果需要的话,应当在例程的入口处立即初始化变量。局部的A n s i S t r i n g类型的变量自动被初始化 为空字符串,局部的接口和d i s p i n t e r f a c e类型的变量自动被初始化为n i l,局部的Va r i a n t和O l e Va r i a n t类 型的变量自动被初始化为U n a s s i g n e d。 3. 全局变量 一般不鼓励使用全局变量。不过,有时候需要用到。即使如此,也应当把全局变量限制在需要的 环境中。例如,一个全局变量可能只在单元的实现部分是全局的。 全局数据如果将由许多单元使用,就应移动到一个公用单元里被所有对象使用。 全局数据可在声明时直接初始化为一个值。注意,所有全局变量自动进行零初始化,因此,不要 将全局变量初始化为诸如0、n i l、或U n a s s i g n e d等空值。零初始化的全局变量在. E X E文件中不占空间。 零初始化的数据保存在虚拟的数据段中,而虚拟数据段只在应用程序启动时才分配内存。非零初始化 的全局数据则在. E X E文件中占空间。 6.2.5 类型 1. 大小写规则 类型标识符是保留字,应当全部小写。Win32 API类型常常全部大写,并且遵循诸如Wi n d o w s . p a s 或其他A P I单元中关于特定类型名的规则。对于其他变量名,第一个字母应大写,其他字母则大小写 交错。下面是一些例子: v a r M y S t r i n g : s t r i n g ; // 保留字 Wi n d o w s H a n d l e : H W N D ; / / Win32 API 类型 I : I n t e g e r ; / /在S y s t e m单元中引入的类型标识 2. 浮点型 不鼓励使用R e a l类型,因为它只是为了与老的P a s c a l代码兼容而保留的。通常情况下,对于浮点 数应当使用D o u b l e。D o u b l e可被处理器优化,是I E E E定义的标准的数据格式。当需要比D o u b l e提供的 范围更大时,可以使用E x t e n d。E x t e n d是i n t e l专用的类型,J a v a不支持。当浮点变量的物理字节数很重 要时(可能使用其他语言编写D L L ),则应当使用S i n g l e。 3. 枚举型 枚举类型名必须代表枚举的用途。名称前要加T字符作为前缀,表示这是个数据类型。枚举类型 的标识符列表的前缀应包含2 ~ 3个小写字符,来彼此关联。例如: T S o n g Ty p e = ( s t R o c k , s t C l a s s i c a l , s t C o u n t r y, s t A l t e r n a t i v e , s t H e a v y M e t a l , s t R B ) ; 枚举类型的变量实例的名称与类型相同,但没有前缀T,也可以给变量一个更加特殊名称,诸如 F a v o r i t e S o n g Ty p e l、F a v o r i t e S o n g Ty p e 2等等。 4. Va r i a n t和O l e Va r i a n t 一般不建议使用Va r i a n t和O l e Va r i a n t。但是,当数据类型只有在运行期才知道时(常常是在C O M和 数据库应用的程序中),这两个类型对编程就有必要。当进行诸如自动化A c t i v e X控件的C O M编程时, 应当使用O l e Va r i a n t;而对于非C O M编程,则应当使用Va r i a n t。这是因为, Va r i a n t能够有效地保存 D e l p h i的原生字符串,而O l e Va r i a n t则将所有字符串转换为O L E字符串(即Wi d e C h a r字符串),且没有引 用计数功能。 6.2.6 构造类型 1. 数组类型 数组类型名应表达出该数组的用途。类型名必须加字母T为前缀。如果要声明一个指向数组类型 的指针,则必须加字母P为前缀,且声明在类型声明之前。例如: t y p e P C y c l e A r r a y = ^ T C y c l e A r r a y ; TCycleArray=array[1..100] of integer; 实际上,数组类型的变量实例与类型名称相同,但没有T前缀。 2. 记录类型 记录类型名应表达出记录的用途。类型名必须加字母T为前缀。如果要声明一个指向记录类型的 指计,则必须加字母P为前缀,且其声明在类型声明之前。例如: 第6章代码标准文档1 3 3 下载 1 3 4 第一部分快速开发的基础 t y p e P E m p l o y e e = ^ T E m p l o y e e ; T E m p l o y e e = r e c o r d E m p l o y e e N a m e : s t r i n g ; E m p l o y e e R a t e : D o u b l e ; 6.2.7 语句 1. 还有www.macrocantu.com里讲了。
http://wlbookwl.myrice.com/jck2002/01/020111delphigf.htm
感谢bigmarshal(鹰)
(对象Pascal编码风格向导 - 译:Tommy Tong) 我们承认许多好的已经确定的工作室或个人,拥有他们自己的和本文里所说的不同的编程习惯, 但是,我们强烈建议你使用一个工具将你的代码转换为Borland风格的代码,然后再提交给Borland,Project JEDI或其他任何公开的源代码知识库。我们不想强迫你改变你的习惯,但我们坚持所有同Borland产品一起工作的的代码遵循本文描述的习惯。
对象Pascal是一种优美的设计语言。较强的可读性就是它的一个优点。本文设计的标准将增强对象Pascal代码的可读性。当开发人员遵从本文展现的这些简单的习惯,他们也将成为标准,这将有益于所有的Delphi开发人员使用统一的易读的代码风格。执行这些标准的努力将增加开发人员的源代码的价值,特别是在维护和调试循环阶段。
尽管我们相信并且赞美本文所宣扬的风格,但我们没有必要支持它,因为它本身是正确的而其它的则是错误的。然而我们相信绝大多数开发人员遵从的标准是有它的功效的,所以我们仍然支持并维护该风格。人类的大脑总在适应标准,并且找寻方法去快速组织所熟悉的模式,从而快速而有效地理解其含义。正是因这种要求而建立的标准将使大量的人尽可能容易的阅读代码。如果在初次使用我们的指导方针是感到陌生,那么我们请你坚持一会儿,你会发现你也变得习惯了。或者,如果你愿意,你也可以保持你自己的风格,并通过一个遵从我们标准的程序来转换,然后你可以将你的代码提交给Borland或其他知识库了。
一些文本编辑器,象Visual SlickEdit可以帮助你按照一定的风格来格式化你的代码。一个免费的由Egbert van Nes开发的格式化程序可以在以下的连接获得:
http://www.slm.wau.nl/wkao/delforexp.html另一个针对Delphi的商业化程序是CrackerJax:
http://www.kineticsoftware.com/html/products.html
1. 变量的命名与格式
变量的名称应当能够表达出它的用途。
循环控制变量常常为单个字母,诸如I、J或K。也可以使用更有意义的名称,例如U s e r I n d e x。布
尔变量名必须能清楚表示出Tr u e和F a l s e值的意义。
2. 局部变量
局部变量用于例程内部,遵循其他变量的命名规则。
如果需要的话,应当在例程的入口处立即初始化变量。局部的A n s i S t r i n g类型的变量自动被初始化
为空字符串,局部的接口和d i s p i n t e r f a c e类型的变量自动被初始化为n i l,局部的Va r i a n t和O l e Va r i a n t类
型的变量自动被初始化为U n a s s i g n e d。
3. 全局变量
一般不鼓励使用全局变量。不过,有时候需要用到。即使如此,也应当把全局变量限制在需要的
环境中。例如,一个全局变量可能只在单元的实现部分是全局的。
全局数据如果将由许多单元使用,就应移动到一个公用单元里被所有对象使用。
全局数据可在声明时直接初始化为一个值。注意,所有全局变量自动进行零初始化,因此,不要
将全局变量初始化为诸如0、n i l、或U n a s s i g n e d等空值。零初始化的全局变量在. E X E文件中不占空间。
零初始化的数据保存在虚拟的数据段中,而虚拟数据段只在应用程序启动时才分配内存。非零初始化
的全局数据则在. E X E文件中占空间。
6.2.5 类型
1. 大小写规则
类型标识符是保留字,应当全部小写。Win32 API类型常常全部大写,并且遵循诸如Wi n d o w s . p a s
或其他A P I单元中关于特定类型名的规则。对于其他变量名,第一个字母应大写,其他字母则大小写
交错。下面是一些例子:
v a r
M y S t r i n g : s t r i n g ; // 保留字
Wi n d o w s H a n d l e : H W N D ; / / Win32 API 类型
I : I n t e g e r ; / /在S y s t e m单元中引入的类型标识
2. 浮点型
不鼓励使用R e a l类型,因为它只是为了与老的P a s c a l代码兼容而保留的。通常情况下,对于浮点
数应当使用D o u b l e。D o u b l e可被处理器优化,是I E E E定义的标准的数据格式。当需要比D o u b l e提供的
范围更大时,可以使用E x t e n d。E x t e n d是i n t e l专用的类型,J a v a不支持。当浮点变量的物理字节数很重
要时(可能使用其他语言编写D L L ),则应当使用S i n g l e。
3. 枚举型
枚举类型名必须代表枚举的用途。名称前要加T字符作为前缀,表示这是个数据类型。枚举类型
的标识符列表的前缀应包含2 ~ 3个小写字符,来彼此关联。例如:
T S o n g Ty p e = ( s t R o c k , s t C l a s s i c a l , s t C o u n t r y, s t A l t e r n a t i v e , s t H e a v y M e t a l , s t R B ) ;
枚举类型的变量实例的名称与类型相同,但没有前缀T,也可以给变量一个更加特殊名称,诸如
F a v o r i t e S o n g Ty p e l、F a v o r i t e S o n g Ty p e 2等等。
4. Va r i a n t和O l e Va r i a n t
一般不建议使用Va r i a n t和O l e Va r i a n t。但是,当数据类型只有在运行期才知道时(常常是在C O M和
数据库应用的程序中),这两个类型对编程就有必要。当进行诸如自动化A c t i v e X控件的C O M编程时,
应当使用O l e Va r i a n t;而对于非C O M编程,则应当使用Va r i a n t。这是因为, Va r i a n t能够有效地保存
D e l p h i的原生字符串,而O l e Va r i a n t则将所有字符串转换为O L E字符串(即Wi d e C h a r字符串),且没有引
用计数功能。
6.2.6 构造类型
1. 数组类型
数组类型名应表达出该数组的用途。类型名必须加字母T为前缀。如果要声明一个指向数组类型
的指针,则必须加字母P为前缀,且声明在类型声明之前。例如:
t y p e
P C y c l e A r r a y = ^ T C y c l e A r r a y ;
TCycleArray=array[1..100] of integer;
实际上,数组类型的变量实例与类型名称相同,但没有T前缀。
2. 记录类型
记录类型名应表达出记录的用途。类型名必须加字母T为前缀。如果要声明一个指向记录类型的
指计,则必须加字母P为前缀,且其声明在类型声明之前。例如:
第6章代码标准文档1 3 3
下载
1 3 4 第一部分快速开发的基础
t y p e
P E m p l o y e e = ^ T E m p l o y e e ;
T E m p l o y e e = r e c o r d
E m p l o y e e N a m e : s t r i n g ;
E m p l o y e e R a t e : D o u b l e ;
6.2.7 语句
1.
还有www.macrocantu.com里讲了。
[email protected]