编码规范Word格式文档下载.docx
《编码规范Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《编码规范Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
![编码规范Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-12/7/fc1bfee4-2251-4e23-80b9-62c3760f2a3b/fc1bfee4-2251-4e23-80b9-62c3760f2a3b1.gif)
四.IDE环境
五.参考资料
请参见
常用控件命名前缀
编码原则
Delphi编码规范
1.使用英文而不是拼音缩写,多个单词在一起时注意大小写,单词间不提倡用“_”
2.单词过长可以使用缩写,除被广泛了解的单词缩写外,单词缩写必须给出注释,如:
sAdName//Administrator帐号
3.命名中带前缀的,作用域为过程用小写前缀,否则用大写前缀
4.不要使用无意义的单词如Temp、Flag命名
5.文件、变量、常量、属性等用[形]+名词;
函数、方法用动+[形]+[名词]或动+状语,如:
AboutFrm.pas
AboutFrm.dfm
FootBall.dpr
FHorzScrollBar:
TControlScrollBar;
procedureAdjustClientRect(varRect:
TRect);
override;
procedureAutoScrollInView(AControl:
TControl);
virtual;
项目应该有以下几个公共单元(XXX为项目代号):
∙XXXUtils.pas:
公共例程(函数和类),项目结束后提交给公共资源组
∙XXXTypes.pas:
公共类型和常量
∙XXXConsts.pas:
公共资源串(resourcestring)
Pas文件:
有窗体的单元(如Form)用基类缩写做后缀
dfm、xfm文件:
文件名和Pas文件一样(类名以基类全名为后缀)
SysInfos.dpr
MainFrm.dfm(TMainForm)
MainFrm.pas
CustomDM.pas(TCustomDataModule)
CustomRDM.pas(TCustomRemoteDataModule)
EditFram.pas(TEditFrame)
DbGridEhreg.pas
常量命名应当表达出用途。
如果有类别,该类别的所有常量加前缀,前缀为类别缩写的小写字母,例如:
对于文件打开方式(FileOpenModes),定义常量:
fmOpenRead=$0000;
fmOpenWrite=$0001;
TFileEditStyle=(fsEdit,fsComboBox);
mbYesNoCancel=[mbYes,mbNo,mbCancel];
如果无类别,常量的前缀为C
。
例如:
CProductName=‘GCL7.0’
提示类信息,必须定义为资源串,保存在XXXConsts.pas。
资源串常量以S开头:
resourcestring
SOpenFileTitle='
Open'
;
SInvalidTabIndex='
Tabindexoutofbounds'
SErrorSettingPath='
Errorsettingpath:
"
%s"
'
派生类,一般用后缀体现基类,层次太多时可以考虑重新命名,如:
TMainForm=class(TForm)
TControl=class(TComponent)
TCustomFrame=class(TScrollingWinControl)
1.循环变量一般用i、j、k等,也可以用有意义的单词表达如:
nUserIndex
2.一般局部变量通过前缀标识类型(多个前缀的,第一个为推荐
)
前缀
类型
a
Array
b
Boolean
c
Char
dt
DateTime,Date,Time
d
Double,Single
h
Handle
n,i
Integer,SmallInt,Word,Byte
p
Pointer,PChar,各种类型指针
s,str
String
v
Variant,OleVariant
ws
WideString
o
对象
3.非局域变量通过前缀来区别作用域
全局变量:
G
,全局变量应少用。
私有成员:
F,但类型中的成员不带前缀,例如:
GDogType:
Byte;
TMainFrom=class(TForm);
private
FCustomName:
string;
...
type
TColumnProperty=record
Name:
...
3.参数
无论参数名和属性或成员变量是否同名,参数均应加A前缀(避免不知觉重名给调试带来问题)
TControlScrollBar=class(TPersistent)
FControl:
TScrollingWinControl;
FKind:
TScrollBarKind;
constructorCreate(AControl:
AKind:
TScrollBarKind);
public
propertyKind:
TScrollBarKindreadFKind;
控件应当有一个小写的前缀来表明其类型,控件类型前缀是控件类型名演变而成的。
演变规则为:
1.一个单词的控件命名规则
1)从控件类型名中移去T前缀。
例如TButton变成Button。
2)除了第一个元音,删去所有元音字母。
例如,Button变成Bttn,Edit变成Edt。
3)压缩双字母。
例如,Bttn变成Btn。
4)如发生冲突,则在某一控件前缀中加入一个元音。
例如在TBatton控件的前缀中加入元音变为batn,以区别TButton的前缀。
2.两个单词的控件命名规则
多个单词构成的控件,一般取每个单词的首字母。
如:
TMainMenu,则mm
3.常用控件命名参见《常用控件命名前缀》
文档。
符合命名基本原则,此外,设置输入参数值的例程应以Set为前缀;
获取数值的例程应以Get为前缀,例如:
protected
procedureGetChildren(Proc:
TGetChildProc;
Root:
TComponent);
procedureSetParent(AParent:
TWinControl);
end;
文件必须有文件头注释,内容包括设计者、时间、单元名称、功能描述、审核、版权等信息,文件头可以用代码模板功能或GExpert建立。
{-----------------------------------------------------------------------------
子目查询(这是当前单元的名称,对于Form为窗体Caption)
设计:
Linc2004.06.30
备注:
审核:
Copyright(c)1994-2004GrandSoftCorporation
-----------------------------------------------------------------------------}
GExpert模板定义为:
|
作者:
%USER%%YEAR%.%MONTH%.%DAY%
Copyright(c)1994-%YEAR%GrandSoftCorporation
边框允许这种方式(项目应统一):
{****************************************************************************}
{}
标准事件,不用注释。
自定义过程/函数都要有注释(简短且显而易见的除外),注释中的参数部分要求每个参数单独一行,分别注明用途。
注释可以用代码模板功能或GExpert建立。
作者:
zhuht2003.04.27
参数:
返回:
功能:
参数:
|
返回:
函数体中,实现同一功能的程序行集中编写,形成程序块,程序块与程序块之间用空行隔开,每一程序块必须有注释,注释的量为总代码量的1/5~1/3。
程序块的注释格式应统一,参考如下:
//注释内容
程序块中的分支条件都应有注释,格式为
if..then
//注释内容
2.3成员
在类(或结构、枚举)的成员变量(包括类的成员函数)声明中,要求加入注释。
格式如下:
//标志文档是否被更改
FModified:
Boolean;
或直接加到该行的后面,如FModified:
//注释
如果修改别人创建的函数,一定要加上注释,格式如下:
//zhuht040212+2表示紧接着的下面两行是由zhuht(朱红涛)增加的;
//zhuhtt040212-2表示zhuht删除了两行。
删除的行请注释掉而不要真正删除,除非经函数创建人同意。
//zhuht040212*2表示zhuht更改了两行,新增两行,把老行注释掉。
(如果函数创建人同意,可以把老行删除掉)
如果修改的添加或删除的行数较多,可以用括号的方式,如下:
//zhuht040212+{
…
//zhuht040212+}
{*zhuht040212-
zhuht040212-*}
一般的,尽量不要修改别人的程序,而应该让程序的编写人修改,你只需提出功能要求即可。
只有在程序的编写人已经不可能再为你修改源程序时你才能修改别人的程序。
Bug的修改,应在注释中标注修改人姓名、时间、Bug号,例如:
//zhif0211283651向导新建非市场价组价时刷新市场价增加对新市场价的判断
注释中,姓名、日期为便于查找定位而设,因此,一个人的姓名应该只有一种拼法,建议使用邮件账号,日期格式应统一用紧凑格式。
一般的保留字小写。
Win32API类型常常全部大写,并且遵循诸如Windows.pas或其他API单元中关于特定类型名的规则。
var
Mytring:
//保留字
WindowsHandle:
HWND;
//Win32API类型
i:
Integer;
//在System单元中介绍的类型标识
每级间两个空格
逗号、冒号后边,等号前后,赋值符前后,运算符前后加一个空格。
括号前后不带空格。
代码原则上不要超过右边界线(80个字符),折行的代码应比上一行缩进两个空格,后续的折行和当前行缩进一致
代码中应保留适当地空行,空行也是注释
begin、end必须独占一行(else后的begin除外)
if(Window<
>
TaskActiveWindow)andIsWindowVisible(Window)and
IsWindowEnabled(Window)then
begin
New(P);
P^.Next:
=TaskWindowList;
P^.Window:
=Window;
TaskWindowList:
=P;
EnableWindow(Window,False);
end
elsebegin
func1;
func2;
end;
程序段中尽可能地少用出口函数,如:
Exit
适当地使用with来简化代码
∙多个条件,应按照计算的复杂程度从右向左排
∙如果无else子句且执行语句只有一句,该执行语句推荐写在then后,例如:
ifConditionthendosomething;
∙case语句中每种情况常量应当按数字或字母的顺序排列
SomeClass1:
=TSomeClass.Create;
try
SomeClass2:
try
{dosomecode}
finally
SomeClass2.Free;
finally
SomeClass1.Free;
∙参数个数一般不多余5个
∙数组、短字符串或接口类型的参数不能被例程修改时,应当把标识为const;
∙同一类参数放在一起,越是常用的参数放在越前面,输入参数放在输出参数前
functionFormatDateTime(constFormat:
DateTime:
TDateTime;
constFormatSettings:
TFormatSettings):
overload;
全局变量、成员变量声明,每行只写一个变量,一般要有注释。
自动创建的Form:
除非特别原因,只有主Form才自动生成。
其他所有Form必须从ProjectOptions对话框的自动生成列表中删除。
1.原则上,任何一门语言的编码规范,都和源码风格保持一致。
本规范在制定过程中,参照了VCL、Demos源码以及公司以往的规范文档《Delphi5编程代码规范.doc》
2.本规范是《编码原则》的补充,它和《编码原则》一起,构成Delphi项目编码阶段的参照依据
3.阅读本规范前,推荐阅读《编码大全》(CodeComplete,中文版)这本书
GExpert1.20版注释项模版设置:
通过菜单GExpert-->
Configration-->
EditorExperts(页签)进入,列表中选ExpandMacroTemplate进行Configure即可