1.规范简介
本规范主要规定Delphi源程序在书写过程中所应遵循的规则及注意事项。编写该规范的目的是使公司软件开发人员的源代码书写习惯保持一致。这样做可以使每一个组员都可以理解其它组员的代码,以便于源代码的二次开发记忆系统的维护。
2.单元的格式
2.1 基本要求
2.1.1 缩进
缩进就是在当源程序的级改变时为增加可读性而露出的两个空格。缩进的规则为每一级缩进两个空格。不准许使用Tab。因为Tab会因为用户所作的设置不同而产生不同的效果。当遇到begin 或进入判断、循环、异常处理、with语句、记录类型声明、类声明等的时侯增加一级, 当遇到end或退出判断、循环、异常处理、with语句、记录类型声明、类声明等的时侯减少一级。
2.1.2 Begin…End
begin语句和end语句在源程序中要独占一行,例如: for I := 0 to 10 do begin //不正确的用法 end; for I := 0 to 10 do //正确的用法 begin end;
2.1.3空格
在操作符及逻辑判断符号的两端添加空格,例如:I := I + 1;,a and b 等,
但添加括号时不需要空格。
例如:if ( a>b )and( a错误的用法 if (a > b) and (a < c) then //正确的用法
2.1.4 变量
尽量不用缩写,尽量用名词,如有多个单词则每个单词的第一个字符一定要大写;见名知意
所有模块内全局变量必须用‘F’为前缀。如果几个模块之间需要进行资料交换,则需要通过声明属性的方法来实现。
2.2单元说明
新建每一个新单元文件时,请先按如下格式定制单元说明
{******************************************************* Copyright?(c)?2000-2004?*********公司技术开发部
Project:---该单元所属的项目
Module:---该单元所属的功能模块
Describe:---该单元的功能
Author:---创建人
Date:---创建日期
Version版本号:
History`s Modification:---修改历史区域
{*************************
Modify No:---修改编号
Modifier:---修改人 DateTime:---修改时间 Cause:---修改原因
Modify No:---修改编号
Modifier:---修改人 DateTime:---修改时间 Cause:---修改原因
*************************}
*******************************************************}
2.3 过程与函数的说明
{*******************************************************
PrcedureeName/FunctionName: Input: a---输入参数说明,b---输入参数说明,c---输入参数说明 Output: x---输出参数说明
Const: s---常量说明,t---常量说明
var: x---变量说明, j---变量说明
Describe:----功能描述
若该过程或函数不是该单元创建人所撰写请在此后再加上以下几项内容:
Author:
Date:
*******************************************************}
3.控件的命名
控件的名称可使用以下简写,但所用简写于控件名称之间药添加‘_’:
Standard Tab mm TMainMenu pm TPopupMenu mmi TMainMenuItem pmi TPopupMenuItem lbl TLabel edt TEdit ; TSpinEdit ; TMaskEdit mem TMemo btn TButton ; TBitBtn ; TSpeedButton ; TSpinButton cb TCheckBox rb TRadioButton lb TListBox cb TComboBox scb TScrollBar gb TGroupBox rg TRadioGroup pnl TPanel cl TCommandList
Additional Tab
sg TStringGrid dg TDrawGrid img TImage shp TShape bvl TBevel sbx TScrollBox clb TCheckListbox spl TSplitter stx TStaticText cht TChart
Win32 Tab tbc TTabControl pgc TPageControl il TImageList re TRichEdit tbr TTrackBar prb TProgressBar ud TUpDown hk THotKey ani TAnimate dtp TDateTimePicker tv TTreeView lv TListView hdr THeaderControl stb TStatusBar tlb TToolBar clb TCoolBar
System Tab tm ??TTimer pb ??TPaintBox mp ?TMediaPlayer olec ?TOleContainer ddcc ?TDDEClientConv ddci ?TDDEClientItem ddsc ?TDDEServerConv ddsi ?TDDEServerItem
?
Samples Tab gg?? TGauge cg?? TColorGrid spb? spe? dol? TDirectoryOutline cal? TCalendar ibea? TIBEventAlerter
?
ActiveX Tab cfx? TChartFX vsp?? TVSSpell f1b?? TF1Book vtc?? TVTChart grp?? TGraph
?
Win31 Tab dbll?? TDBLookupList dblc?? TDBLookupCombo ts???? TTabSet ol???? TOutline tnb??? TTabbedNoteBook nb???? TNoteBook hdr??? THeader flb??? TFileListBox dlb??? TDirectoryListBox dcb?? TDriveComboBox fcb?? TFilterComboBox
Midas Tab prv?? TProvider cds?? TClientDataSet qcds?? TQueryClientDataSet dcom? TDCOMConnection olee?? TOleEnterpriseConnection sck?? TSocketConnection rms?? TRemoteServer mid?? TmidasConnection
Internet Tab csk ?TClientSocket ssk ?TServerSocket wbd ?TWebDispatcher pp ???TPageProducer tp ???TQueryTableProducer dstp? ?TDataSetTableProducer nmdt ??TNMDayTime nec ???TNMEcho nf ????TNMFinger nftp ???TNMFtp nhttp ??TNMHttp nMsg ??TNMMsg nmsg ??TNMMSGServ nntp ???TNMNNTP npop ???TNMPop3 nuup ???TNMUUProcessor smtp ???TNMSMTP nst ????TNMStrm nsts ???TNMStrmServ ntm ???TNMTime nudp ??TNMUdp psk ???TPowerSock ngs ???TNMGeneralServer html? ?THtml url? ??TNMUrl sml ??TSimpleMail
Data Access Tab ds? ?TDataSource tbl? ?TTable qry? ?TQuery sp ??TStoredProc db ??TDataBase ssn? ?TSession bm ??TBatchMove usql ??TUpdateSQL
Data Controls Tab dbg? ?TDBGrid dbn ??TDBNavigator dbt ??TDBText dbe ??TDBEdit dbm? ?TDBMemo dbi ??TDBImage dblb ??TDBListBox dbcb? ?TDBComboBox dbch? ?TDBCheckBox dbrg ??TDBRadioGroup dbll ??TDBLookupListBox dblc ??TDBLookupComboBox dbre ??TDBRichEdit dbcg ??TDBCtrlGrid dbch ??TDBChart
Decision Cube Tab dcb ??TDecisionCube dcq ??TDecisionQuery dcs ??TDecisionSource dcp ??TDecisionPivot dcg ??TDecisionGrid dcgr ?TDecisionGraph
QReport Tab qr ??TQuickReport qrsd ?TQRSubDetail qrb ??TQRBand qrcb ??TQRChildBand qrg ??TQRGroup qrl ??TQRLabel qrt ??TQRText qre ??TQRExpr qrs? ?TQRSysData qrm ??TQRMemo qrrt ??TQRRichText qrdr? ?TQRDBRichText qrsh ??TQRShape qri ???TQRImage qrdi ??TQRDBMImage qrcr? ?TQRCompositeReport qrp ??TQRPreview qrch TQRChart
Dialogs Tab OpenDialog ???????TOpenDialog SaveDialog ???????TSaveDialog OpenPictureDialog ?TOpenPictureDialog SavePictureDialog ??TSavePictureDialog FontDialog ????????TFontDialog ColorDialog ???????TColorDialog PrintDialog ????????TPrintDialog PrinterSetupDialog? ?TPrintSetupDialog FindDialog ?????????TFindDialog ReplaceDialog ??????TReplaceDialog
4.修改的要求
4.1修改历史记录 对源文件进行经过批准的修改时,修改者应在程序文件头加入修改历史项。在以后的每一次修改时,修改者都必须在该项目中填写下列信息: Modifier: DateTime: Cause: Comment:
4.2新增代码行 新增代码行的前后应有注释行说明。 // ab 修改人; 修改时间; 修改说明。 新增代码行 // ae
4.3删除代码行 删除代码行的前后用注释行说明。 //db 修改人,修改时间,修改说明。 //要删除的代码行(将要删除的语句进行注释) //de
4.4修改代码行 修改代码行以删除代码行后在新增代码行的方式进行。 //mb 修改人,修改时间,修改说明。 //pre 修改前的代码行
修改后的代码行 //me
5.文件的命名
项目文件必须使用一个有意义的名字。例如: Delphi中系统信息的项目文件被命名为 SysInfo.dpr。 3.7.2 Form 文件 同Form的名称相一致:例如:Form的名称为frrmMain则Form文件的名称就为frmMain.dfm。对应的Unit文件就是frmMain.pas 3.7.3 Data Module 文件 data module文件的命名应该有意义,并且使用‘DM’作为前缀。例如: 用户data module 被命名为‘dmCustomers.dfm’。 对应的Unit文件就是rdmCustomers.pas 3.7.4 Remote Data Module 文件 remote data module文件的命名应该有意义,并且使用‘RDM’作为前缀。例如:用户remote data module 被命名为‘rdmCustomers.dfm’。 对应的Unit文件就是rdmCustomers.pas 3.7.5普通 Unit文件 unit文件的命名应该有意义,并且使用‘u’作为前缀。例如: 通用unit 被命名为‘uGeneral.pas’。

|