Delphi 程序员代码编写标准指南(5)

2008-04-09 04:31:46来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

4.5 Unit文件

4.5.1 通用Unit结构

4.5.1.1 unit的名字

Unit文件应取一个可描述性的名字。例如,包含应用程序主窗体的单元应叫做MainFrm.pas。

4.5.1.2 uses子句

在interface部分的uses子句应包含在interface部分中的代码所需要的单元。去掉那些Delphi可以自动加入到程序中的单元。

在implementation部分的uses子句应只包含在implementation部分中的代码所需要的单元的名字。去掉不必要的单元。

4.5.1.3 interface部分

interface部分应包含只那些其它单元所需要存取类型的定义、变量、过程/函数的预定义等等。否则,就应放在implementation部分定义。

4.5.1.4 implementation部分

implementation部分应包含那些只在本单元中私用的类型定义、变量、过程/函数定义等等。

4.5.1.5 initialization部分

不要在initialization 部分放入耗时长的代码,这将使程序的第一个界面出现
得比较缓慢。

4.5.1.6 finalization部分

在这里要保证释放你在Initialization部分所分配的任何资源。

4.5.2 窗体单元

4.5.2.1 命名

一个窗体的单元文件应拥有与它所对应的窗体文件同样的名称。例如,“关于”窗体的单元名称应为 AboutFrm.pas,而主窗体的单元名称应为MainFrm.pas。

4.5.3 数据模板单元

4.5.3.1 命名

一个数据模板的单元文件应拥有与它所对应的数据模板文件同样的名称。例如,一个自定义数据模板单元的名称应为CustomersDM.pas。

4.5.4 一般目的单元

4.5.4.1 命名

一般目的单元的取名应符合使用该单元的目的。例如,一个实用程序单元取名为BugUtilities.pas。一个包含全局变量的单元取名为CustomerGlobals.pas。

注意,该单元的名字不能与它的工程中所使用的所有包中的单元的名字相同。不赞成使用一般的或通用的单元名字。

4.5.5 构件单元

4.5.5.1 命名

构件单元应放在独立的目录,以将它们同定义构件组或构件集合的单元区分开来。它们要永远同工程在不同的目录。单元名字应同它们的内容相符。

注意:查阅“用户定义的构件”部分来获得更多有关构件命名标准的信息。

4.6 文件头

建议在所有源文件、工程文件、单元等等中使用信息化文件头。一个良好的文件头应包含以下信息:

版权… 著作的年、月、日…
}

五、窗体和数据模板

5.1 窗体

5.1.1 窗体类型命名标准

窗体类型的取名应能表达使用该窗体的目的。类型定义应加以前缀T。前缀后面跟随着描述性的名字。最后,应加以Form后缀来描述名字。例如,一个“关于”的窗体的类型的名字应为:
TAboutFrom = class(TForm);
主窗体的定义为:
TMainForm = class(TForm);
一个用户接入窗体的名字应象:
TCustomerEntryForm = class(TForm);

5.1.2 窗体实例命名标准

窗体实例应是没有带前缀T的相应类的名字。例如,对应于前面窗体类型而言,其实例的名字应为:

类型名称 实例名称
TAboutForm AboutForm
TMainForm MainForm
TCustomerEntryForm CustomerEntryForm

5.1.3 自动创建窗体

只有主窗体可以是自动创建的除非有其它更好的理由不这样做。所有其它的窗体必需从工程选项对话框中的自动创建列表中移走。查阅以下部分来获得更多的信息。

5.1.4 模式窗体实例化函数

所有的窗体单元都应包含一个窗体实例化函数,该函数用来创建、设置、模式地显示窗体,并释放窗体。该函数应返回窗体的模式结果。该函数要传递的参数应遵循本文档指定的“参数传递”标准。通过这种方式封装的函数性有助于代码的再利用和维护。

该窗体的变量要从单元中移走,并再窗体实例的函数中进行本地式地定义。注意,这就意味着该窗体必需从工程/选项对话框中的自动创建列表中剔除。参考本文档后面的“自动创建窗体”。

例如,下面的单元展示了再GetUserData窗体中的一个函数。
unit UserDataFrm;
interface
uses
windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TUserDataForm = class(TForm)
edtUserName : TEdit;
edtUserID : TEdit;
private
{ Private declarations }
public
{ Public declarations }
end;
function GetUserData(var aUserName : String; var aUserID : Integer) :
Word;
implementation
{$R *.DFM }

function GetUserData(var aUserName : String; var aUserID : Integer) :
word;
var
UserDataForm : TuserDataForm;
begin
UserDataForm := TuserDataForm.Create(Application);
try
UserDataForm.Caption := ‘Getting User Data’;
Result := UserDataForm.ShowModal;
if (Result = mrOK) then
begin
aUserName := UserDataForm.edtUserName.Text;
aUserID := StrToInt(UserDataForm.edtUserID.Text);
end;
finally
UserDataForm.Free;
end;
end;
end.

5.2 数据模板

5.2.1 数据模板命名标准

数据模板的取名要符合使用该数据模板的目的。类型的定义应加以前缀T,后面紧接着描述性的名字,最后要加以后缀单词“DataModule”。例如,一个自定义的数据模板有时候应该象:
TCustomerDataModule = class(TDataModule)
一个命令式的数据模板的名字应象:
TOrdersDataModule = class(TDataModule)

5.2.2 数据模板实例命名标准

数据模板实例的名称应是对应不带前缀T的类型的名称。例如,对于前面的窗体类型而言,其实例的名称应为:
类型名称 实例名称
TCustomerDataModule CustomerDataModule
TOrdersDataModule OrdersDataModule

六、包

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:全透明窗体(效果比较好)

下一篇:判断MonthCalander中鼠标点中了日期还是翻页按钮!