转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
delphi代码标准文档(         ★★★★

delphi代码标准文档(

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2588 更新时间:2009/4/23 18:39:59
为前缀,且声明在类型声明之前。例如:

type
  PCycleArray = ^TCycleArray;
  TCycleArray=array[1..100] of integer;

实际上,数组类型的变量实例与类型名称相同,但没有“T”前缀。

2). 记录类型

  记录类型名应表达出记录的用途。类型名必须加字母T为前缀。如果要声明一个指向记录类型的指计,则必须加字母P为前缀,且其声明在类型声明之前。例如:

type
  PEmployee = ^TEmployee;
  TEmployee = record
    EmployeeName: string;
    EmployeeRate: Double;
  end;

3.3.3.类类型(Class)

1). 命名与格式

  类的名称应当表达出类的用途。一般的类名前要加字母“T”,如果是接口类那么类名前要加“I”,错误异常类的类名前要加“E”,而类引用类型(Class-reference type)则要在类名后加“Class”。例如:

type
  TCustomer = class(TObject);
  ICustomer = interface;
  TCustomerClass = class of TCustomer
  ECustomerException = class(Exception);

  类的实例名称通常与类名相同,只不过没有前缀“T”。

var
  Customer: TCustomer;

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

2).字段

(1) 命名与格式

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

(2) 可见性

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

3).方法

(1) 命名与格式

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

(2) 静态方法

  当你不希望一个方法被派生类覆盖时,应当使用静态方法。

(3) 虚拟方法(virtual)与动态方法(dynamic)

  当你希望一个方法能被派生类覆盖,应当使用虚拟方法(virtual)。如果类的方法要被多个派生类直接或间接地使用,则应当用动态方法(dynamic)。例如,某一个类含有一个被频繁覆盖的方法,并有100个派生类,则应将方法定义为动态的,这样可以减少内存的开销。

(4) 抽象方法(abstract)

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

(5) 属性访问方法

  所有属性访问方法应当定义在类的私有或保护部分。属性访问方法遵循与过程和函数相同的规则。用于读的方法应当加“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;

  尽管不是必须,但还是建议你使用写访问方法来访问代表私有字段属性。

4).属性

  属性作为私有字段的访问器,遵循与字段相同的命名规则,只不过没有F前缀。属性名应为名词,而不是动词。属性是数据,而方法是动作。数组属性名应当是复数,而一般的属性应当是单数。

3.3.4.元件类型

1). 元件类型的命名标准

  元件的命名与类的命名类似,只不过当它与其它元件名称冲突时,你可以加上3个字符的前缀,用以标识公司、个人或其他实体。例如,一个时钟元件可以这样声明:

TddgClock = class(TComponent)

注意,作为前缀的3 个字符要小写。

2). 元件实例的命名规则

  元件实例的名称应当能够描述其实际意义,这里命名规则使用了一个变更的匈牙利前缀命名规范。使用前缀而不使用后缀的原因是在搜寻时,在对象检查器和代码探索器中搜寻构件的名字比搜寻构件的类型更容易。在这个标准中,元件实例名包括两个部分:前缀和性质标识名。

(1). 元件的前缀

  元件的前缀多是表现元件类型的字母缩写。参见下面表中的元件前缀:

元件类名 元件前缀 TActionList, TAction表示动作的列表项 act TButton, TSpeedButton, TBitBtn等所有的按钮类 btn TCheckBox, TDBCheckBox等所有的检查框 chk TRadioButton单选按钮类 rdo TToolBar工具条 tb TMainMenu所有的主菜单类 mm TMainMenuItem所有的菜单项类 mi TPopupMenu所有的弹出式菜单类 pm TPopupMenuItem所有的弹出式菜单项类 pmi TLabel, TStaticText等所有用来显示的标签类 lbl TPanel等所有的面板类 pnl TPageControl等所有的页式控件类 pgc TEdit, TMaskEdit等所有的单行编辑框类 edt TMemo, TRichEdit等所有的多行编辑框类 mmo TDrawGrid, TStringGrid等所有的网格类 grd TAnimate等所有的动画类 ani TImageList等所有的图片列表类 il TImage等图片类 img TChart图表类 cht TComboBox, TDBComboBox等所有的下拉式列表框类 cbo TListBox, TDBList等所有的列表框类 lst TTreeView tv TListView lv THotKey hk TSplitter等所有的分隔符类 spt TOpenDialog等所有的对话框元件类 dlg TTable等所有的数据表类 tbl TQuery等所有的SQL查询类元件 qry TClientDataSet所有的客户数据集元件 cds TDataSource ds TDatabase db TSockConnection,TDCOMConnection等连接元件类 con TQuickRep, TFastReport等所有的报表元件类 rpt TDDEClientConv,TDDEClientItem等所有的DDE元件类 dde TMonthCalendar等所有的日历类 cal TGroupBox等控件类 grp

  如上所示,元件类型前缀是从分析描述元件的类型性质而来的。通常情况下,下面的规则描述如何定义一个元件类型前缀:

  • 从元件类型名中移去T前缀。例如TButton变成Button。
  • 除了第一个元音,删去所有元音字母。例如,Button变成bttn,Edit变成edt。
  • 压缩双字母。例如,bttn变成btn。
  • 如发生冲突,则在某一元件前缀中加入一个元音。例如在TBatton元件的前缀中加入元音变为batn,以区别TButton的前缀。
  • 不过,上述规则首先得保证前缀名称必须符合习惯,做到见名知意,如:TDDEClientConv控件的前缀就是一个例外。

注意:元件的前缀是为了表示出元件的类型,是按钮,还是标签等等,因此没有必要为每一个特别元件类建立一个元件前缀,如: TMyButton的元件前缀仍为btn。

(2). 元件性质标识名

  元件性质标识名是元件意图的描述。例如,一个用于关闭窗体的TButton元件实例可命名为btnClose。一个编辑姓名的元件实例可命名为edName。

3.3.5.窗体与对话框类型

1). 窗体类型的命名标准

  窗体或对话框类型的名称应当表达出窗体的用途,如果是窗体要加“Tfrm”前缀,如果是对话框要加“Tdlg”,后跟描述性名。例如,About窗体类型名称为:

TfrmAbout = class(TForm)

主窗体的类型名称为:

TfrmMain = class(TForm)

客户登录窗体的类型名称为:

TfrmCustomerEntry = class(TForm)

登陆对话框的类型名称为:

TdlgLogin = class(TForm)

2). 窗体实例的命名标准

  窗体实例的名称与相应的类型名称相同,但没有前缀T 。例如,前面提到的窗体类型与实例的名称为:

类型名 实例名 TfrmAbout frmAbout TfrmMain frmMain TfrmCustomerEntry frmCustomerEntry TdlgLogin dlgLogin

3). 自动创建的窗体

  除非特别原因,只有主窗体才自动生成。其他所有窗体必须从Project Options对话框的自动生成列表中删除。更进一步信息,请参阅后面几节。

4). 模式窗体实例化函数

  所有窗体单元都应当含有实例化函数,用于创建、设置、模式显示和释放窗体。这个函数将返回由窗体返回的模式结果。传递给这个函数的参数遵循参数传递的规则。之所以要这样封装,是为了便于代码的重用和维护。

  窗体的变量应当从单元中移走,改在窗体实例化函数中作为局部变量定义(注意,要求从Project Options对话框的自动生成列表中移走该窗体。请看前面的内容。

例如,下面的单元文件演示了GetUserData的实例化函数。

Unit UserDataFrm;

Interface

Uses
 
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

Type

  TfrmUserData = 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
 
frmUserData: TfrmUserData;
begin
 
frmUserData := TfrmUserData.Create(Application);
  frmUserData.Caption:=''''Getting User Data'''' ;
  Result : = frmUserData.ShowModal;
  if Result=mrOK then
  begin
   
aUserName := frmUserData.edtUserName.Text;
    aUserID := StrToInt(frmUserData.edtUserID.Text);
  end;
  finally
   
frmUserData.Free;
  end;
end;

End.

5).窗体框架与复合窗体

  如果一个窗体结构过于复杂,就必须将其分化成为一个主窗体框架以及嵌入到主窗体框架的若干子窗体框架。如:

TfrmMainFrame: TfrmInfoFrame,TfrmEditorFrame

  使用窗体框架,主要是为了解决界面和代码复用问题,以及提高单元代码的内聚力(划分后,每一个窗体框架为一个独立单元),从而提高软件工程质量。你必须提炼出界面关联代码(可复用的)和应用关联代码(不能复用的)。

3.3.6.数据模块类型

1). 数据模块的命名标准

  数据模块类型名称应表达出它的用途,且要加前缀“Tdm”,后跟描述性名称。例如,Customer数据模块的类型名称为:

TdmCustomer = class(TDataModule)

Orders 数据模块的类型名称为:

TdmOrder = class(TDataModule)

2). 数据模块实例的命名标准

  数据模块实例的名称应当与相应的类型名称相同,但没有前缀T 。例如,前面的数据模块类型、实例名称如下:

类型名称 实例名 TdmCustomer dmCustomer TdmOrder dmOrder

3.4.文件

  建议在所有源文件、项目文件和单元文件使用结构化的文件头信息。一个文件头至少应包含以下信息:

{
Copyright @ Year by Authors
}

3.4.1.项目文件

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

3.4.2.窗体文件

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

3.4.3.数据模块文件

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

3.4.4.远程数据模块文件

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

3.4.5.单元文件

1). 普通单元

(1) 单元名

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

(2) Uses 子句

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

(3) Interface 部分

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

(4) Implementation 部分

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

(5) Initialization 部分

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

(6) Finalization 部分

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

2).窗体单元

  窗体单元文件的名称与相应的窗体名称相同,只是要将前缀变成后缀。例如,About窗体的单元名称叫AboutFrm.pas。主窗体的单元文件名称叫MainFrm.pas。

3).数据模块单元

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

4).通用单元

  通用单元的名称应当表达出它的用途,名称前要加“u”前缀。例如,一个实用调试工具单元的名称叫uDebugUtilities.pas,包含全局变量的单元名称叫uCustomerGlobals.pas。

注意,一个项目中单元名称必须是唯一的。通用单元名不能重名。

5).元件单元

(1). 命名

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

注意,有关元件命名标准的更多信息,请参阅“元件类型的命名标准”。

  元件单元只能含有一个主要元件,这是指出现在元件选项板上的元件。其他辅助性的元件或对象也可以包含在同一单元中。

(2). 注册单元

  元件的注册过程应当从元件单元中移走,放在一个单独的单元中。这个注册单元用于注册所有元件、属性编辑器、元件编辑器、向导等。

  元件注册应当在设计期包中进行。因此,注册单元应当包含在设计期包而不是运行期包中。建议注册单元这样命名:

xxxReg.pas

其中,xxx字符前缀,以标识元件包名称或公司、个人、其他实体。例如,注册单元命名为xxxReg.pas。

6).包文件(.dpk)命名规则

(1). 运行期包与设计期包

  运行期包中应当只包含所需要的单元。那些属性编辑器和元件编辑器的单元应当放在设计期包中。注册单元也应当放在设计期包中。

(2). 文件命名标准

  包的命名遵循下列模式:

dcliiiDescvvCn.pkg —设计期包
iiiDescvvCn.pkg    —运行期包

  其中,iii代表一个2-3字符的前缀,用于标识公司、个人或其他需要标识的事情,也可不要;Desc表示该控件包的简短描述;vv代表包的版本号,你可以根据需要取舍;前缀“dcl”表示设计期包,没有该前缀表示运行期包;字母“Cn”表示编译器类型与编译器版本号,如:Delphi5

上一页  [1] [2] [3]  下一页


[Delphi程序]Delphi代码标准文档  
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台