Delphi源程序格式书写规范Word下载.docx
《Delphi源程序格式书写规范Word下载.docx》由会员分享,可在线阅读,更多相关《Delphi源程序格式书写规范Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
过程和函数的名称应全部使用有意义的单词组成,并且所有单词的第一个字母应该使用大写字母。
procedureformatharddisk;
//不正确的命名
procedureFormatHardDisk;
//正确的命名
设置变量内容的过程和函数,应使用Set作为前缀,例如:
procedureSetUserName;
读取变量内容的过程和函数,应使用Get作为前缀,例如:
functionGetUserName:
string;
3.2.2过程和函数的参数
3.2.2.1命名
统一类型的参数写在同一句中:
procedureFoo(Param1,Param2,Param3:
Integer;
Param4:
3.2.2.2命名
所有参数必须是有意义的;
并且当参数名称和其它属性名称重了的时候,加一个前缀‘A’,例如:
procedureSomeProc(AUserName:
AUserAge:
integer);
3.2.2.3命名冲突
当使用的两个unit中包括一个重名的函数或过程时,那幺当你引用这一函数或过程时,将执行在use子句中后声明的那个unit中的函数或过程。
为了避免这种‘uses-clause-dependent’需要在引用函数或过程时,写完整函数或过程的出处。
SysUtils.FindClose(SR);
Windows.FindClose(Handle);
3.3变量
3.3.1变量命名及格式
首先所有变量必须起有意义的名字,使其它组员可以很容易读懂变量所代表的意义,变量命名可以采用同义的英文命名,可使用几个英文单词,但每一单词的首字母必须大写。
var
WriteFormat:
:
string;
同时对于一些特定类型可采用一定的简写如下:
指针类型
P
纪录类型
Rec
数组类型
Arr
类
Class
循环控制变量通常使用单一的字符如:
i,j,或k。
另外使用一个有意义的名字例如:
UserIndex,也是准许的。
3.3.2局部变量
在过程中使用局部变量遵循所有其它变量的命名规则。
3.3.3全局变量
尽量不使用全局变量,如必须使用全局变量则必须加前缀‘g’,同时应在变量名称中体现变量的类型。
gprecUserCount:
point;
//名称为UserCount的全局变量,其类型为指向一结构的指针
但是在模块内部可以使用全局变量。
所有模块内全局变量必须用‘F’为前缀。
如果几个模块之间需要进行资料交换,则需要通过声明属性的方法来实现。
type
TFormOverdraftReturn=class(TForm)
private
{Privatedeclarations}
FuserName:
FuserCount:
ProcedureSetUserName(Value:
FunctionGetUserName:
public
{Publicdeclarations}
propertyUserName:
stringreadGetUserNamewriteSetUserName;
propertyUserCount:
IntegerreadFuserCountwriteFuserCount;
end;
3.4类型
3.4.1大小写协议
保留字的类型名称必须全部小写。
Win32API的类型通常全部大写,对于其它类型则首字母大写,其余字母小写,例如:
MyString:
//reservedword
WindowHandle:
HWND;
//Win32APItype
I:
//typeidentifierintroducedinSystemunit
3.4.2浮点类型
尽量不使用Real类型,他只是为了和旧的Pascal代码兼容,尽量使用Double类型。
Double类型是对处理器和数据总线做过最优化的并且是IEEE定义的标准数据结构。
当数值超出Double的范围时,使用Extended。
但Extended不被Jave支持。
但使用其它语言编写的DLL时可能会使用Single类型。
3.4.3枚举类型
枚举类型的名字必须有意义并且类型的名字之前要加前缀‘T’。
枚举类型的内容的名字必须包含枚举类型名称的简写,例如:
TSongType=(stRock,stClassical,stCountry,stAlternative,stHeavyMetal,stRB);
3.4.4数组类型
数组类型的名字必须有意义并且类型的名字之前要加前缀‘T’。
如果声明一个指向数组类型的指针必须在该类型的名字之前加前缀‘P’,例如:
PCycleArray=^TCycleArray;
TCycleArray=array[1..100]ofinteger;
3.4.5记录类型
记录类型的名字必须有意义并且类型的名字之前要加前缀‘T’。
PEmployee=^TEmployee;
TEmployee=record
EmployeeName:
string
EmployeeRate:
Double;
3.5类
3.5.1命名及格式
类的名字必须有意义并且类型的名字之前要加前缀‘T’。
TCustomer=class(TObject)
类实例的名字通常是去掉‘T’的类的名字。
Customer:
TCustomer;
3.5.2类中的变量
3.5.2.1命名及格式
类的名字必须有意义并且类型的名字之前要加前缀‘F’。
所有的变量必须是四有的。
如果需要从外部访问此变量则需要声明一属性
3.5.3方法
3.5.3.1命名及格式
同函数和过程的命名及格式。
3.5.3.2属性访问方法
所有的属性访问方法必须出现在private或protected中。
属性访问方法的命名同函数和过程的命名另外读方法(readermethod)必须使用前缀‘Get’.写方法(writermethod)必须使用前缀‘Set’。
写方法的参数必须命名为‘Value’,其类型同所要写的属性相一致。
TSomeClass=class(TObject)
private
FSomeField:
protected
functionGetSomeField:
procedureSetSomeField(Value:
Integer);
public
propertySomeField:
IntegerreadGetSomeFieldwriteSetSomeField;
3.6属性
3.6.1命名及格式
同其用操作的,出去前缀‘F’的类的变量的名称相一致。
3.7文件
3.7.1项目文件
3.7.1.1项目目录结构
程序主目录--Bin(应用程序所在路径)
-Db(本地数据库所在路径)
-Doc(文档所在路径)
-Hlp(帮助文件所在路径)
-Backup(备份路径)
-Tmp(临时文件路径)
3.7.1.2命名
项目文件必须使用一个有意义的名字。
Delphi中系统信息的项目文件被命名为SysInfo.dpr。
3.7.2Form文件
3.7.2.1命名
同Form的名称相一致:
Form的名称为FormMain则Form文件的名称就为FormMain.frm。
3.7.3DataModule文件
3.7.3.1命名
datamodule文件的命名应该有意义,并且使用‘DM’作为前缀。
用户datamodule被命名为‘DMCustomers.dfm’。
3.7.4RemoteDataModule文件
3.7.4.1命名
remotedatamodule文件的命名应该有意义,并且使用‘RDM’作为前缀。
用户remotedatamodule被命名为‘RDMCustomers.dfm’。
3.7.5Unit文件
3.7.5.1普通Unit
3.7.5.1.1Unit文件命名
unit文件的命名应该有意义,并且使用‘unit’作为前缀。
通用unit被命名为‘UnitGeneral’。
3.7.5.2FormUnits
3.7.5.2.1命名
Formunit文件的名字必须和Form的名称保持一致。
主窗体叫FormMain.pas则FormUnit文件的名字为:
UnitFormMain。
3.7.5.3DataModuleUnits
3.7.5.3.1命名
DataModuleunit文件的名字必须和DataModule的名称保持一致。
主DataModule叫DMMain.pas则DataModuleUnit文件的名字为:
UnitDMMain。
3.7.5.4文件头
在所有文件的头部应写上此文件的用途,作者,日期及输入和输出。
{
修改日期:
作者:
用途:
本模块结构组成:
}
3.7.6Forms和DataModulesForms
3.7.6.1Form类
1.Form类命名标准
Forms类的命名应该有意义,并且使用‘TForm’作为前缀。
AboutForm类的名字为:
TAboutForm=class(TForm)
主窗体的名字为
TMainForm=class(TForm)
2.Form类实例的命名标准
Form的类实例的名字应同期掉‘T’的Form类的名字相一致。
TypeName
InstanceName
TaboutForm
AboutForm
TmainForm
MainForm
TCustomerEntryForm
CustomerEntryForm
3.7.6.2DataModulesForm
3.7.6.2.1.DataModuleForm命名标准
DataModulesForms类的命名应该有意义,并且使用‘TDM’作为前缀。
TDMCustomer=class(TDataModule)
TDMOrders=class(TDataModule)
3.7.6.2.2.DataModule实例命名标准
DataModuleForm的类实例的名字应同期掉‘T’的DataModuleForm类的名字相一致。
TCustomerDataModule
CustomerDataModule
TordersDataModule
OrdersDataModule
3.8控件
3.8.1控件实例的命名
控件的实例应使用去掉‘T’该控件类的名称作为前缀,例如:
输入用户姓名的Tedit的名字为:
EditUserName。
3.8.2控件的简写
控件的名称可使用以下简写,但所用简写于控件名称之间药添加‘_’:
3.8.2.1StandardTab
mmTMainMenu
pmTPopupMenu
mmiTMainMenuItem
pmiTPopupMenuItem
lblTLabel
edtTEdit
memTMemo
btnTButton
cbTCheckBox
rbTRadioButton
lbTListBox
cbTComboBox
scbTScrollBar
gbTGroupBox
rgTRadioGroup
pnlTPanel
clTCommandList
3.8.2.2AdditionalTab
bbtnTBitBtn
sbTSpeedButton
meTMaskEdit
sgTStringGrid
dgTDrawGrid
imgTImage
shpTShape
bvlTBevel
sbxTScrollBox
clbTCheckListbox
splTSplitter
stxTStaticText
chtTChart
3.8.2.3Win32Tab
tbcTTabControl
pgcTPageControl
ilTImageList
reTRichEdit
tbrTTrackBar
prbTProgressBar
udTUpDown
hkTHotKey
aniTAnimate
dtpTDateTimePicker
tvTTreeView
lvTListView
hdrTHeaderControl
stbTStatusBar
tlbTToolBar
clbTCoolBar
3.8.2.4SystemTab
tmTTimer
pbTPaintBox
mpTMediaPlayer
olecTOleContainer
ddccTDDEClientConv
ddciTDDEClientItem
ddscTDDEServerConv
ddsiTDDEServerItem
3.8.2.5InternetTab
cskTClientSocket
sskTServerSocket
wbdTWebDispatcher
ppTPageProducer
tpTQueryTableProducer
dstpTDataSetTableProducer
nmdtTNMDayTime
necTNMEcho
nfTNMFinger
nftpTNMFtp
nhttpTNMHttp
nMsgTNMMsg
nmsgTNMMSGServ
nntpTNMNNTP
npopTNMPop3
nuupTNMUUProcessor
smtpTNMSMTP
nstTNMStrm
nstsTNMStrmServ
ntmTNMTime
nudpTNMUdp
pskTPowerSock
ngsTNMGeneralServer
htmlTHtml
urlTNMUrl
smlTSimpleMail
3.8.2.6DataAccessTab
dsTDataSource
tblTTable
qryTQuery
spTStoredProc
dbTDataBase
ssnTSession
bmTBatchMove
usqlTUpdateSQL
3.8.2.7DataControlsTab
dbgTDBGrid
dbnTDBNavigator
dbtTDBText
dbeTDBEdit
dbmTDBMemo
dbiTDBImage
dblbTDBListBox
dbcbTDBComboBox
dbchTDBCheckBox
dbrgTDBRadioGroup
dbllTDBLookupListBox
dblcTDBLookupComboBox
dbreTDBRichEdit
dbcgTDBCtrlGrid
dbchTDBChart
3.8.2.8DecisionCubeTab
dcbTDecisionCube
dcqTDecisionQuery
dcsTDecisionSource
dcpTDecisionPivot
dcgTDecisionGrid
dcgrTDecisionGraph
3.8.2.9QReportTab
qrTQuickReport
qrsdTQRSubDetail
qrbTQRBand
qrcbTQRChildBand
qrgTQRGroup
qrlTQRLabel
qrtTQRText
qreTQRExpr
qrsTQRSysData
qrmTQRMemo
qrrtTQRRichText
qrdrTQRDBRichText
qrshTQRShape
qriTQRImage
qrdiTQRDBMImage
qrcrTQRCompositeReport
qrpTQRPreview
qrchTQRChart
3.8.2.10DialogsTab
OpenDialogTOpenDialog
SaveDialogTSaveDialog
OpenPictureDialogTOpenPictureDialog
SavePictureDialogTSavePictureDialog
FontDialogTFontDialog
ColorDialogTColorDialog
PrintDialogTPrintDialog
PrinterSetupDialogTPrintSetupDialog
FindDialogTFindDialog
ReplaceDialogTReplaceDialog
3.8.2.11Win31Tab
dbllTDBLookupList
dblcTDBLookupCombo
tsTTabSet
olTOutline
tnbTTabbedNoteBook
nbTNoteBook
hdrTHeader
flbTFileListBox
dlbTDirectoryListBox
dcbTDriveComboBox
fcbTFilterComboBox
3.8.2.12SamplesTab
ggTGauge
cgTColorGrid
spbTSpinButton
speTSpinEdit
dolTDirectoryOutline
calTCalendar
ibeaTIBEventAlerter
3.8.2.13ActiveXTab
cfxTChartFX
vspTVSSpell
f1bTF1Book
vtcTVTChart
grpTGraph
3.8.2.14MidasTab
prvTProvider
cdsTClientDataSet
qcdsTQueryClientDataSet
dcomTDCOMConnection
oleeTOleEnterpriseConnection
sckTSocketConnection
rmsTRemoteServer
midTmidasConnection
4.修改规范
本规则所做的规定仅适用于已经纳入配置管理的程序。
在这类修改中,要求保留修改前的内容、并标识出修改和新增的内容。
并在文件头加入修改人、修改日期、修改说明等必要的信息。
4.1修改历史记录
对源文件进行经过批准的修改时,修改者应在程序文件头加入修改历史项。
在以后的每一次修改时,修改者都必须在该项目中填写下列信息:
修改人
修改时间
修改原因
修改说明即如何修改
4.2新增代码行
新增代码行的前后应有注释行说明。
//修改人,修改时间,修改说明
新增代码行
//修改结束
4.3删除代码行
删除代码行的前后用注释行说明。
//修改人,修改时间,修改说明
//要删除的代码行(将要删除的语句进行注释)
//修改结束
4.4修改代码行
修改代码行以删除代码行后在新增代码行的方式进行。
//修改前的代码行
//修改结束
//修改后的代码行
修改后的代码行