首页 delphi代码编写规范

delphi代码编写规范

举报
开通vip

delphi代码编写规范预付费组delphi代码编写规范 目录 11. 概述 12. 通用源代码格式规则 23. 过程和函数 24. 变量 24.1. 变量命名及格式 34.2. 类型 45. 类 45.1. 命名及格式 55.2. 类中的属性访问(这点可以考虑是否加入) 56. 结构化异常处理 57. 元件类型 57.1. 元件实例的命名规则 68. 窗体与对话框类型 79. 数据模块类型 710. 文件 1. 概述 本规范是根据网上一些资料整理而来,为了实用,只列出了一...

delphi代码编写规范
预付费组delphi代码编写规范 目录 11. 概述 12. 通用源代码格式规则 23. 过程和函数 24. 变量 24.1. 变量命名及格式 34.2. 类型 45. 类 45.1. 命名及格式 55.2. 类中的属性访问(这点可以考虑是否加入) 56. 结构化异常处理 57. 元件类型 57.1. 元件实例的命名规则 68. 窗体与对话框类型 79. 数据模块类型 710. 文件 1. 概述 本规范是根据网上一些资料整理而来,为了实用,只列出了一些重点。 2. 通用源代码格式规则 1). 缩进 缩进就是每级间有两个空格。一般不要在源代码中放置制 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 符。这是因为,制表符的宽度随着不同的设置和代码管理实用程序(打印、文档及版本控制等)而不同。当遇到begin 或进入判断、循环、异常处理、with语句、 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 类型声明、类声明等的时侯增加一级, 当遇到end或退出判断、循环、异常处理、with语句、记录类型声明、类声明等的时侯减少一级。 2). begin...end 语句 begin 语句必须单独占一行。例如,下面第一行是错误的,而第二行正确: for i:=0 to 10 do begin // 错, begin 与f o r 在同一行 for i:=0 to 10 do // 对, begin 在另外一行中 begin 本规则的一个特殊情况是,当begin 为else 语句的一部分时,例如: if some statement = then begin . . . end else begin Some Other Statement; end; 注意:end 语句总单独一行。当begin 不为else 语句的一部分时,相应的end 语句与begin 语句的缩进量相同。 3).注释 我们通常使用“{...}”类型的块注释,用“//”行注释。每个函数、过程和全局变量(包括模块内全局变量)都必须有注释,函数、过程的参数都必须说明。 4).空格(这个是否可以取消)   在操作符及逻辑判断符号的两端一般要添加空格,例如:I := I + 1;,a and b 等,但添加括号时不需要空格。例如:if ( a > b ) then //错误的用法 If (a > b) then //正确的用法 又例如:procedure Test(Param1: integer; Param3: string); 3. 过程和函数 (1). 格式 过程名应当以大写字母开始,且大小写交错以增加可读性。下面是一个不正确的写法: procedure thisisapoorlyformattedroutinename; 改成这样写就对了: procedure ThisIsMuchMoreReadableRoutineName; (2). 形参    所有参数必须是有意义的;并且当参数名称和其它属性名称重了的时候,加一个前缀‘A’, 例如: procedure SomeProc(AUserName: string; AUserAge: integer); 4. 变量 4.1. 变量命名及格式 (1)命名前缀(这点可以考虑是否要加) 字符串类型 s ?? Int i Double d Datetime dt Boolean b TDataset ds TQuery qry …… 如: var sUsrName : string;   循环控制变量通常使用单一的字符如:i, j, 或 k。 另外使用一个有意义的名字例如:UserIndex ,也是准许的。   首先所有变量必须起有意义的名字,使其它组员可以很容易读懂变量所代表的意义,变量命名可以采用同义的英文命名,可使用几个英文单词,但每一单词的首字母必须大写。例如: var sWriteFormat::string;   同时对于一些特定类型可采用一定的简写如下:   指针类型      P   纪录类型      Rec   数组类型      Arr 类         Class (2). 全局变量 全局数据如果将由许多单元使用,就应移动到一个公用单元里被所有对象使用。全局数据可在声明时直接初始化为一个值。   尽量不使用全局变量,如必须使用全局变量则必须加前缀‘G’,同时应在变量名称中体现变量的类型。例如: GPRecUserCount: point;//名称为UserCount的全局变量,其类型为指向一结构的指针但是在模块内部可以使用全局变量。 所有模块内全局变量必须用‘F’为前缀。如果几个模块之间需要进行资料交换,则需要通过声明属性的方法来实现。例如: type TFormOverdraftReturn = class(TForm) private { Private declarations } F_sUserName: string; F_iUserCount: Integer; Procedure SetUserName(Value: string); Function GetUserName: string; public { Public declarations } property UserName: string read GetUserName write SetUserName; property UserCount: Integer read FuserCount write FuserCount; end; 4.2. 类型 (1).大小写规则 类型标识符是保留字,应当全部小写。Win32 API 类型常常全部大写,并且遵循诸如Windows.pas或其他API单元中关于特定类型名的规则。对于其他变量名,在加入前缀的情况下第一个字母应大写,其他字母则大小写交错。下面是一些例子: var sMyString: string; // 保留字 WindowsHandle: HWND; // Win32 API 类型 (2).浮点型 不鼓励使用Real类型,因为它只是为了与老的Pascal代码兼容而保留的。通常情况下,对于浮点数应当使用Double。当需要比Double提供的范围更大时,可以使用Extend。 (3).枚举类型   枚举类型的名字必须有意义并且类型的名字之前要加前缀‘T’。枚举类型的内容的名字必须包含枚举类型名称的简写,例如: TSongType = (stRock, stClassical, stCountry, stAlternative, stHeavyMetal, stRB); 枚举类型的变量实例的名称与类型相同,但没有前缀T ,也可以给变量一个更加特殊名称,诸如:FavoriteSongTypel、FavoriteSongType2等等。 (4).数组类型   数组类型的名字必须有意义并且类型的名字之前要加前缀‘T’。如果声明一个指向数组类型的指针必须在该类型的名字之前加前缀‘P’,例如: type PCycleArray = ^TCycleArray; TCycleArray = array[1..100] of integer; (5).记录类型   记录类型的名字必须有意义并且类型的名字之前要加前缀‘T’。如果声明一个指向数组类型的指针必须在该类型的名字之前加前缀‘P’,例如: type PEmployee = ^TEmployee; TEmployee = record EmployeeName: string EmployeeRate: Double; end; 5. 类 5.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; 注意:关于元件的命名,请参阅“元件类型”。 5.2. 类中的属性访问(这点可以考虑是否加入)   所有的属性访问方法必须出现在private 或 protected 中。属性访问方法的命名同函数和过程的命名另外读方法(reader method)必须使用前缀‘Get’. 写方法(writer method)必须使用前缀‘Set’。写方法的参数必须命名为‘Value’,其类型同所要写的属性相一致。例如: TSomeClass = class(TObject) private FiSomeField: Integer; protected function GetSomeField: Integer; procedure SetSomeField( Value: Integer); public property SomeField: Integer read GetSomeField write SetSomeField; end; 6. 结构化异常处理 异常处理主要用于纠正错误和保护资源。这意味着,凡是分配资源的地方,都必须使用try...finally来保证资源得到释放。不过,如果是在单元的初始/结束部分或者对象的构造器/析构器中来分配/释放资源则例外。 try...except的用法 如果你希望在发生异常时执行一些任务,可以使用try...except。不鼓励使用带else子句的try...except,即try...except...else用法。 7. 元件类型 7.1. 元件实例的命名规则 元件实例的名称应当能够描述其实际意义,这里命名规则使用了一个变更的匈牙利前缀命名规范。使用前缀而不使用后缀的原因是在搜寻时,在对象检查器和代码探索器中搜寻构件的名字比搜寻构件的类型更容易。在这个 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 中,元件实例名包括两个部分:前缀和性质标识名。 (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 注意:元件的前缀是为了表示出元件的类型,是按钮,还是标签等等,因此没有必要为每一个特别元件类建立一个元件前缀,如: TMyButton的元件前缀仍为btn。 (2). 元件性质标识名 元件性质标识名是元件意图的描述。例如,一个用于关闭窗体的TButton元件实例可命名为btnClose。一个编辑姓名的元件实例可命名为edName。 8. 窗体与对话框类型 (1)窗体类型的命名标准 窗体或对话框类型的名称应当表达出窗体的用途,如果是窗体要加“Tfrm”前缀,如果是对话框要加“Tdlg”,后跟描述性名。如果是框架要加“Tframe”,后跟描述性名。例如,About窗体类型名称为: TfrmAbout = class(TForm) 主窗体的类型名称为: TfrmMain = class(TForm) 登陆对话框的类型名称为: TdlgLogin = class(TForm) 框架 TframeUserList = class(TFrame) //这是我加的 (2)窗体的标 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 必须写明,便于查找打开 (3)窗体实例的命名标准 窗体实例的名称与相应的类型名称相同,但没有前缀T 。例如,前面提到的窗体类型与实例的名称为: 类型名 实例名 TfrmAbout frmAbout TfrmMain frmMain TfrmCustomerEntry frmCustomerEntry TdlgLogin dlgLogin TframeUserList frameUserList 9. 数据模块类型 (1)数据模块的命名标准 数据模块类型名称应表达出它的用途,且要加前缀“Tdm”,后跟描述性名称。例如,Customer数据模块的类型名称为: TdmCustomer = class(TDataModule) (2)数据模块实例的命名标准 数据模块实例的名称应当与相应的类型名称相同,但没有前缀T 。例如,前面的数据模块类型、实例名称如下: 类型名称 实例名 TdmCustomer dmCustomer TdmOrder dmOrder 10. 文件 建议在所有源文件、项目文件和单元文件使用结构化的文件头信息。一个文件头至少应包含以下信息: { Copyright @年月日 by 作者 功能:***** } (1)项目文件 项目文件的名称应当具有描述意义。例如,“The Delphi Developer’s Guide Bug Manager ”的项目名称为DDGBugs.dpr,一个系统信息程序的名称为SysInfo.dpr。 (2)窗体文件 窗体文件的名称应当表达出窗体的用途,且具有Frm、Dlg、Frame后缀。例如,About窗体的文件名叫AboutFrm.dfm,主窗体的文件名叫MainFrm.dfm。 前面 (3)数据模块文件 数据模块文件的名称应当表达出数据模块的作用,且具有DM后缀。例如,Customers数据模块的文件名叫CustomersDM.dfm。 4).通用文件 通用单元的名称应当表达出它的用途,名称前要加“u”前缀。例如,一个实用调试工具单元的名称叫uDebugUtilities.pas,包含全局变量的单元名称叫uCustomerGlobals.pas。 注意,一个项目中单元名称必须是唯一的。通用单元名不能重名。
本文档为【delphi代码编写规范】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_709812
暂无简介~
格式:doc
大小:72KB
软件:Word
页数:8
分类:建筑/施工
上传时间:2013-05-13
浏览量:24