Delphi代码风格约定
2008-04-10 02:57:49来源:互联网 阅读 ()
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;
接口遵循相同规则
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:算术编码算法
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash