转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
Delphi代码的标准风格         ★★★★

Delphi代码的标准风格

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2866 更新时间:2009/4/23 18:40:47
lphi_is_new_to_me //使用下划线

3.1 单元命名
    参见单元声明

3.2 类/接口命名
    参见类/接口声明

3.3 域/字段命名
    使用驼峰式格式。以大写的"F"开始,并且在private中声明所有的数据,使用属性或获取者(getter)和安装者(setter)来提供公共的存取操作。例如:使用名字GetSomething来命名一个返回内部域/字段值的函数,使用SetSomething来命名一个设置域/字段值的过程。
    不要在const段全部使用大写,除非是头文件翻译的需要。
    Delphi是在加利福尼亚开发的,所有我们阻止记号的使用,除非是头文件翻译的需要。
正确:
  FMyString: string;
不正确:
  lpstrMyString: string;
    当然在枚举类型定义中保留了匈牙利命名法:
    TBitBtnKind = (bkCustom, bkOK, bkCancel, bkHelp,
      bkYes, bkNo, bkClose, bkAbort, bkRetry,
      bkignore, bkAll);
    在这种情况下字符bk被插入到这个枚举类型的每一个元素前。bk意味着ButtonKind。
    在考虑命名习惯时,要避免使用单个字符的名称,但零时变量和循环变量除外。
    避免使用"l"(L)变量,因为它和"1"(one)无论在打印机还是在显示器上都难以分辨。

3.4 方法命名
    方法命名也使用驼峰格式。方法命名习惯同非常量域的命名方法是相同的,但可以从上下文区分它们。方法命名应当强制使用动词或动词短语。例如:
//好的方法命名:
ShowStatus, DrawCircle, AddLayoutComponent
//差的方法命名:
MouseButton //名词短语,没有描述功能
drawCircle //以小写字母开头
add_layout_component //使用了下划线

//以下方法的功能不够明确。它是开始运行一个服务呢(更好:StartServer)还是判断一个服务是否在运行(更好:IsServerRunning)?
ServerRunning //动词短语,但不是命令
    一个获取或者设置一些类属性的方法应当分别被称为GetProperty或者SetProperty,Property代表该属性的名称。例如:
GetHeight, SetHeight
    一个测试类的布尔属性的方法应当被命名为IsVisible,Visible代表属性的名称。例如:
    IsResizable, IsVisible

3.5 局部变量命名
    除了不使用"F"外,局部变量的命名规则同域/字段的命名规则一样。参见3.3节。

3.6 保留字
    保留字和指示符要全部小写。这有时有些混乱。例如:Integer是一个标识符,并且以首字母大写出现。而string保留字则全部小写。

3.7 类型声明
    所有类型名称声明以字母T开始,接下来和类的命名相同。

4.0 空白用法
    4.1 空白行
        空白行可以通过将逻辑相关的代码段分组来提高可读性。一个空白行也可以在下列地方使用:
        在版权注释块之后,包声明(package),导入段(import)。
        类声明之间。
        方法声明之间。
    4.2 空格
        Object Pascal是一种非常清晰易读的语言。通常,你不需要在代码里加入很多空格来分隔行。以下几条提供了一些原则该如何使用空格:
            4.2.2 不应当使用空格:
                在方法名和左括号之间;
                在.(dot)操作符之前或之后;
                在一元操作符和它的操作数之间;
                在一个类型和被它强制转换的表达式之间;
                在左括号之后和右括号之前;
                在左方括号之后和右方括号之前;
                在一个封号前;
                例如:
                //正确用法:
                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 ] ;

4.3 缩进
    你应当总是为所有的缩进层次缩进两个空格。换句话说就是,第一层缩进两个空格,第二层缩进四个空格,第三层缩进六个空格……。不要使用制表符Tab。
    当然,仍然有少量的例外。保留字象unit, uses, type, interface, implementation, initialization 和finalization总是顶格的。单元的最后一个end标识符也是顶格的。在项目文件中,program和主begin、end也是顶格的。在主begin..end块内则需要缩进至少两个空格。

4.4 续行
    行应当限制在80列以内。超过80列的行应当被分成多个连续的行。所有的后续行应当排列在该声明的第一行之后,并且缩进两个字符的空格。
    例如:
//正确:


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;


    不要在参数和它的类型之间换行,除非列表是由逗号分隔,那样的话要在最后一个参数前换行,这样类型名就在下一行开头了。冒号和它的变量之间不应该有空格,而冒号和类型名之间要有一个空格。
//正确:
procedure Foo(Param1: Integer; Param2: Integer);

//错误:
procedure Foo( Param :Integer; Param2:Integer);
    一个后续行不应以一个二进制操作符开始。避免在通常不出现空白的地方割断一行,比如在方法名和它的左括号之间,或者在一个数组名和它的左方括号之间。如果你必须在上述情况下割断行,那么应当在左括号或左方括号之后换行。不要把begin放在其它代码的同一行。
例如:
//错误:


while (LongExpression1 or LongExpression2) do begin
  //DoSomething
  //DoSomethingElse;
end;




//正确


while (LongExpression1 or longExpression2) do
begin
  //DoSomething
  //DoSomethingElse;
end;

if (LongExpressiong1) or
  (LongExpression2) or
  (LongExpression3) then





5.0 注释
    Object Pascal语言支持两种注释:块和单行注释。以下是一些注释用法原则:
    ·在单元顶部放置注释用以解释单元的用途是有益的
    ·在类声明前放置注释是有益的
    ·在方法声明前设置注释是有益的
    ·避免语句含义明显的注释
        i := i + 1; //Add one to i
    ·记住,容易误解的注释比没有注释更加有害。
    ·避免在注释里放入看上去要失效的信息
    ·避免在注释的边框里嵌入星号或其他的排版符号
    ·零时的注释,即需要被改变或删除的注释,要在他们之前加上"???:"标记,这样易于查找。从观念上来说,所有的零时注释都应当在程序发布前删除。
    // ???: Change this to call Sort when it is fixed
    List.MySort;


5.1 块注释
    Object Pascal支持两种类型的块注释。最常用的是一对花括号{}括起来的注释。Delphi小组尽可能的保持该注释少而简单。例如:你应当避免在你的注释里使用星号来创建图案或行。相反,使用空格来分隔你的注释,就象你在字处理文档里做的一样。你的注释里的单词应当在第一个花括号的同一行开始,就象下面从DsgnIntf.pas中摘录的一样:

{ TPropertyEditor
  Edits a property of a component, or list of components,
  selected into the Object Inspector. The property
  editor is created based on the type of the
  property being edited as determined by the types
  registered by...
  etc...
    GetXxxValue
      Gets the valu

上一页  [1] [2] [3] [4] [5]  下一页


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台