Delphi编程规范(3)

2019-04-16 16:47

可能的情况,每个资源分配应当与:try…finally结构匹配。例如,下面代码可能导致错误:

SomeClassl := 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;

2.10.3 try…except的用法

如果您希望在发生异常时执行一些任务,可以使用try…except。通常,没有必要为了简单地显示一个错误信息而使用try…except,因为Application对象能够自动根据上下文做到这一点。如果要在except子句中激活默认的异常处理,可以再次触发异常。

2.10.4 try…except…else的用法

不鼓励使用带else子句的try…except,因为这将阻塞所有的异常,包括您没有准备的异常。 2.11 类

2.11.1 命名与格式

类的名称应当表达出类的用途。类名前要加字母T,表示它是一个类型。例如: type

TCustomer = class(TObject);

类的实例名称与类名相同,只不过没有前缀T。 var

Customer: TCustomer;

注意:关于元件的命名,请参阅“元件类型命名标准”部分。

2.11.2 字段

■ 命名与格式

字段的命名遵循与变量相同的规则,只不过要加前缀F,表示这是字段。

■ 可见性

所有字段必须为私有。如果要在类的作用域之外访问字段,可借助于类的特性来实现。

2.11.3 方法

■ 命名与格式

方法的命名遵循与过程和函数相同的规则。

■ 静态方法

当您不希望一个方法被派生类重载时,应当使用静态方法。

■ 虚拟方法与动态方法

当您希望一个方法能被派生类重载,应当使用虚拟方法。如果类的方法要被多个派生类直接或间接地使用,

则应当用动态方法。例如,某一个类含有一个被频繁重载的方法,并有100个派生类,则应将方法定义为动态的,这样,可以减少内存的开销。

■ 抽象方法

如果一个类要创建实例,则不要使用抽象方法。抽象方法只能在那些从不创建实例的基类中使用。

■ 特性访问方法

所有特性访问方法应当定义在类的私有或保护部分。

特性访问方法遵循与过程和函数相同的规则。用于读的方法应当加Get前缀,用于写的方法应当加Set前缀,并且有一个叫Value的参数,其类型与特性的类型相同。例如:

TSomeClass = class(TObject); private

FSomeField: Integer; protected

function GetSomeField: Integer;

procedure SetSomeField(Value: Integer); public

property SomeField: Integer read GetSomeField write SetSomeField; end;

2.11.4 特性

特性作为私有字段的访问器,遵循与字段相同的命名规则,只不过没有F前缀。

特性名应为名词,而不是动词。特性是数据,而方法是动作。

数组特性名应当是复数,而一般的特性应当是单数。

2.11.5 访问方法的使用

尽管不是必须,但还是建议您使用写访问方法来访问代表私有字段的特性。 3. 文件

3.1 项目文件

项目文件的名称应当具有描述意义。例如,“The Delphi 4 Developer?s Guide Bug Manager”的项目名称为DDGBugs.dpr,一个系统信息程序的名称为SysInfo.dpr。

3.2 Form文件

Form文件的名称应当表达出Form的用途,且具有Frm后缀。例如,About的文件名叫AboutFrm,主Form的文件名叫MainFrm。

3.3 数据模块文件

数据模块文件的名称应当表达出数据模块的作用,且具有DM后缀。例如,Customers数据模块的文件名叫CustomersDM.dfm。

3.4 远程数据模块文件

远程数据模块文件的名称应当表达出远程数据模块的用途。名称后要加RDM后缀。例如,Customers远程数据模块的文件叫CustomersRDM.dfm。

3.5 单元文件

3.5.1 普通单元的结构

■ 单元名

单元的名称应当有描述性。例如,应用程序的主Form单元叫MainFrm.pas。

■ Uses子句

Interface部分的Uses子句应当只包含该部分需要的单元。不要包含可能由Delphi自动添加的单元名。

Implementation部分的Uses子句应当只包含在该部分需要的单元,不要有多余的单元。

■ Interface部分

Interface部分应当只包含需要被外部单元访问的类型、变量、过程与函数的声明。而且,这些声明应当在Implementation部分之前。

■ Implementation部分

Implementation部分包括本单元私有的类型、变量、过程与函数的声明。

■ Initialization部分

不要在单元的Initialization部分放置花费时间很多的代码。否则,将导致应用程序启动时显得很慢。

■ Finalization部分

确保释放所有在Initialization部分中分配的资源。

3.5.2 Form单元

Form单元文件的名称与相应的Form名称相同。例如:About的单元名称叫AboutFrm.pas。主From的单元文件名称叫为MainFrm.pas。

3.5.3 数据模块单元

数据模块单元文件的名称与相应的数据模块名称相同。例如,Customers数据模单元的名称叫CustomersDM.pas。

3.5.4 通用的单元

通用单元的名称应当表达出它的用途。例如,一个实用工具单元的名称叫ugUtilities.pas,包含全局变量的单元名称叫CustomerGlobals.pas。

注意,一个项目中单元名称必须是唯一的。

3.5.5 元件单元

元件单元应放在单独的路径中,以区别于定义元件的单元。它们一般与项目不放在同一路径下。单元文件名称应表达出其内容。

注意,有关元件命名标准的更多信息,请参阅“自定义元件”部分。

3.6 文件头

所有源文件和项目文件都应具有文件头。一个正确的文件头应包含以下信息:

//////////////////////////////////////////////////////////////////////(80 chars)// 创建:Tujh010618 (创建信息:创建者、创建日期)

// 版权:迈特安 (版权)

// 功能: (本文件的主要功能)

// 函数: (主要函数和过程;可省)

//////////////////////////////////////////////////////////////////////

3.7 函数或过程头格式如下


Delphi编程规范(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:红外光学材料第六章 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: