分享
 
 
 

Delphi代码风格约定

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

Delphi代码风格约定

qingrui li 据Charles Calvert的Object Pascal Style Guide编注

注:很多用Delphi的人不注意代码风格,经常写一些不规范的代码,以致别人很难看懂且容易出错。希望本文能鼓励广大Delphi爱好者统一到标准风格,共同前进。

本文描述了格式化Delphi代码的标准风格。次风格基于Delphi开发组的编码约定。我们承认很多流行的源码使用了不同于我们的风格,但是我们强烈推荐在公共源码社区使用Borland风格。

Delphi是个漂亮的语言,优点中重要的一条即是可读性。本标准为增强可读性设计。当开发者遵循本标准,所有开发者将从统一易读的风格中受益。强化风格标准的努力可以提高源程序的价值,尤其在调试和维护周期。

InfixCaps命名风格

又叫CamelCaps,名字由几个表达意义的词组成,每个词的首字母大写,其余小写。

如:MyFile,IntToStr,Items。

Delphi不使用匈牙利表示法,而推荐意义明确的名字。如用AppName而非lpszAppName,用Successful而非bSuccess,用ClientRect而非lprectClientRect。

源文件命名

使用InfixCaps形式。如果转译C/C++头文件,则使用与原头文件相同的名字。如果需要将多个头文件合并到一个单元,则使用主要头文件的名字,如:WinBase.h、Windows.h合并为Windows.pas。

命名约定

除了保留字和指示字全部小写,其它标识符使用InfixCaps风格。

注:最近似乎倾向于局部变量和形式参数使用简单的小写或缩写词。

例外是转译头文件的标识符保留原风格。

类型名都以T打头(Type的首字母)

函数、过程、方法名使用动词或动词短语,其它标识符使用名词或名词短语。

类数据成员以F打头(Field的首字母)

枚举类型成员前冠以小写的类型缩写,一般两个字母,例:

TBitBtnKind = (bkCustom, bkOK, bkCancel, bkHelp,

bkYes, bkNo, bkClose, bkAbort, bkRetry,

bkIgnore, bkAll);

返回布尔值的函数以Is打头,例:IsVisible、IsResizable

空白的使用

在适当位置插入空行,分隔代码的不同部分,如类声明间、函数实现间等。

使用空格的位置:标点的右边,二元运算符的两边

不应插入空格的位置:

方法名和其后的左括弧间

.的前后

一元运算符和其操作数间

左括弧后和右括弧前

分号前

正确的例子:

function TMyClass.MyFunc(var Value: Integer);

MyPointer := @MyRecord;

MyClass := TMyClass(MyPointer);

MyInteger := MyIntegerArray[5];

错误的例子:

function TMyClass.MyFunc( var Value: Integer ) ;

MyPointer := @ MyRecord;

MyClass := TMyClass ( MyPointer ) ;

MyInteger := MyIntegerArray [ 5 ] ;

缩进

应使用两个空格的缩进,不要使用Tab字符。

begin...end间的代码要缩进,begin...end本身不缩进

续行时缩进两个空格

正确的例子:

function CreateWindowEx(dwExStyle: DWORD;

lpClassName: PChar; lpWindowName: PChar;

dwStyle: DWORD; X, Y, nWidth, nHeight: Integer;

hWndParent: HWND; hMenu: HMENU; hInstance: HINST;

lpParam: Pointer): HWND; stdcall;

if ((X = Y) or (Y = X) or

(Z = P) or (F = J) then

begin

S := J;

end;

while (LongExpression1 or LongExpression2) do

begin

// DoSomething

// DoSomethingElse;

end;

if (LongExpression1) or

(LongExpression2) or

(LongExpression3) then

类声明安下列顺序组织

数据域

方法

属性

访问层次安下列顺序组织,但IDE自动生成的代码是例外

Private declarations

Protected declarations

Public declarations

Published declarations

构造函数和析构函数声明在方法声明的前面。由于TObject.Destroy是虚函数且TObject.Free调用的是Destroy,所以析构函数不要用其它的名字。构造函数可以用除Create外的名字,但一般最好统一用Create。

例:

TMyClass = class(TObject)

private

protected

public

published

end;

数据应该只在私有部分声明,并以F打头(Field的首字母)。

type

TMyClass = class(TObject)

private

FMyData: Integer;

function GetData: Integer;

procedure SetData(Value: Integer);

public

published

property MyData: Integer read GetData write SetData;

end;

接口遵循相同规则

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有