Delphi编程建议遵守的规范2---命名规范

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变成bttnEdit变成edt 
  • 压缩双字母。例如,bttn变成btn 
  • 如发生冲突,则在某一组件前缀中加入一个元音。例如在TBatton组件的前缀中加入元音变为batn,以区别TButton的前缀。 

       不过,上述规则首先得保证前缀名称必须符合习惯,做到见名知意,如:TDDEClientConv控件的前缀就是一个例外。 

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

1.14.窗体类型的命名标准

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

1.15.窗体实例的命名标准

      窗体实例的名称与相应的类型名称相同,但没有前缀。使用前缀法命名窗体和对话框的好处在于可以在Object Inspector(属性观察器)中快速找到需要的组件类型

1.16.数据模块的命名

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

1.17.数据模块实例的命名

       数据模块实例的名称应当与相应的类型名称相同,但没有前缀

 

      当然这只是其中的一部分,还有很多规范需要制定和遵。另外这只是建议性的规范,并不是强制性的东西,可以根据自己的团队情况去指定符合自己的标准和规则

原文地址:https://www.cnblogs.com/xumenger/p/4335413.html