1.1.形参命名建议
所有形参的名称都应当表达出它的用途。如果合适的话,形参的名称最好以字母a 为前缀,例如:
procedure SomeProc(aUserName:string; aUserAge:integer);
当参数名与类的特性或字段同名时,前缀a 就有必要了
1.2.命名冲突
当两个单元中含有相同名称的过程时,如果调用该过程,实际被调用的是Uses 子句中较后出现的那个单元中的过程。为避免这种情况,可在方法名前加想要的单元名
SysUtils.FindClose(SR); 或Windows.FindClose(Handle);
1.3.局部变量依据数据类型不同,应该用不同的前缀标识,各类型前缀对应关系如下:
变量类型 |
前缀 |
举例 |
Integer变量 |
小写i |
iCount |
Shortint变量 |
小写si |
siCount |
Cardinal变量 |
小写ci |
ciCount |
Longint变量 |
小写l |
lEntrustNo |
Int64变量 |
小写i64 |
i64SerialNo |
Byte变量 |
小写bt |
btFlag |
Word变量 |
小写w |
wCount |
DWORD变量 |
小写dw |
dwCount |
Boolean变量 |
小写b |
bFound |
Char变量 |
小写c |
cKind |
String变量 |
小写s |
sName |
Float变量 |
小写e |
eLastPrice |
Double变量 |
小写e |
eCurrentBalance |
Handle变量 |
小写h |
hDllHandle |
PChar变量 |
小写sz |
szBuffer |
X坐标 |
小写x |
xPos |
Y坐标 |
小写y |
yPos |
1.4.全局变量一般以大写字母“G”打头,并遵循其他变量的命名规则。
1.5.枚举类型
枚举类型名代表美剧的用途,名称前面要加T字符作为前缀,表示这是个数据类型。枚举类型的标识符列表的前缀应包含2-3个小写字符,小鞋子富取法一般的类型名的每个单词道,例子
TSongType=(stRock, stClassical, stCountry, stAlternative, stHeavyMetal, stRB);
枚举类型的变量实例的名称与类型相同,但没有前缀T ,也可以给变量一个更加特殊名称,诸如:GoodSongType、BadSongType等等。
1.6.数组类型
数组类型名应表达出该数组的用途。类型名必须加字母“T”为前缀。如果要声明一个指向数组类型的指针,则必须加字母P 为前缀,且声明在类型声明之前。例
type PCycleArray = ^TCycleArray; //PCycleArray是TCycleArray类型的指针 TCycleArray=array[1..100] of integer; Var CycleArray: TCycleArray; //实际上,数组类型的变量实例与类型名称相同,但没有“T”前缀
1.7.记录类型
记录类型名应表达出记录的用途。类型名必须加字母T为前缀。如果要声明一个指向记录类型的指计,则必须加字母P为前缀,且其声明在类型声明之前。例
type PEmployee = ^TEmployee; TEmployee = record EmployeeName: string; EmployeeRate: Double; end;
1.8.类类型
类的名称应当表达出类的用途。一般的类名前要加字母“T”,如果是接口类那么类名前要加“I”,错误异常类的类名前要加“E”,而类引用类型(Class-reference type)则要在类名后加“Class”,抽象类一般是在类名前还要加“Custom”。
类的实例名称通常与类名相同,只不过没有前缀“T”。
1.9.类的成员变量
类的成员变量的命名遵循与变量相同的规则,只不过要加前缀F ,表示这是类的成员。
所有成员变量必须为私有。如果要在类的作用域之外访问字段,可借助于类的属性来实现。
1.10.属性访问方法
所有属性访问方法应当定义在类的私有或保护部分。属性访问方法遵循与过程和函数相同的规则。用于读的方法应当加“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;
1.11. 属性
属性作为成员变量的访问器,遵循与成员变量相同的命名规则,只不过没有F前缀。属性名应为名词,而不是动词。属性是数据,而方法是动作。数组属性名应当是复数,而一般的属性应当是单数。
1.12.组件实例命名
组件实例的名称应当能够描述其实际意义。使用前缀而不使用后缀的原因是在搜寻时,在对象检查器和代码探索器中搜寻构件的名字比搜寻构件的类型更容易。在这个标准中,组件实例名包括两个部分:前缀和性质标识名。
1.13.组件的前缀
组件的前缀多是表现组件类型的字母缩写。参见下面表中的组件前缀:
组件类名 |
组件前缀 |
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 |
TForm等窗体类 |
frm |
如上所示,组件类型前缀是从分析描述组件的类型性质而来的。通常情况下,下面的规则描述如何定义一个组件类型前缀:
- 从组件类型名中移去T前缀。例如TButton变成Button。
- 除了第一个元音,删去所有元音字母。例如,Button变成bttn,Edit变成edt。
- 压缩双字母。例如,bttn变成btn。
- 如发生冲突,则在某一组件前缀中加入一个元音。例如在TBatton组件的前缀中加入元音变为batn,以区别TButton的前缀。
不过,上述规则首先得保证前缀名称必须符合习惯,做到见名知意,如:TDDEClientConv控件的前缀就是一个例外。
注意:组件的前缀是为了表示出组件的类型,是按钮,还是标签等等,因此没有必要为每一个特别组件类建立一个组件前缀,如: TMyButton的组件前缀仍为btn。
1.14.窗体类型的命名标准
窗体或对话框类型的名称应当表达出窗体的用途,如果是窗体要加“Tfrm”前缀,如果是对话框要加“Tdlg”,后跟描述性名
1.15.窗体实例的命名标准
窗体实例的名称与相应的类型名称相同,但没有前缀T 。使用前缀法命名窗体和对话框的好处在于可以在Object Inspector(属性观察器)中快速找到需要的组件类型
1.16.数据模块的命名
数据模块类型名称应表达出它的用途,且要加前缀“Tdm”,后跟描述性名称
1.17.数据模块实例的命名
数据模块实例的名称应当与相应的类型名称相同,但没有前缀T
当然这只是其中的一部分,还有很多规范需要制定和遵。另外这只是建议性的规范,并不是强制性的东西,可以根据自己的团队情况去指定符合自己的标准和规则