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

Delphi编码规范

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1844 更新时间:2009/4/23 18:38:04
 

Delphi编码规范

作者:Tulipsys  更新日期:2003年12月16日

目录

1.  一般的惯例(命名 - 缩进和空格 - 边距 - 大小写 - 注释)

2.  语句(begin…end语句-if语句-case语句-for语句-while语句-repeat语句-with语句-异常处理语句)

3.  过程和函数(命名与格式-形参-变量-类型-自定义类型)

4.  面向对象相关(类的命名与格式-字段-方法-属性-方法的实现)

 

制定编码规范的目的是为了使一组程序员生成同样风格的代码,使一个团队形成并保持一定的风格。如果这个目标能够实现,那么整个项目的文件看上去就像是一个程序员写的。好性很好玩,但这样的好处是每个程序员的代码都易于为他人所理解,从而会在很大程度上提高代码的可维护性,也因此会降低维护费用。对于任何团队来说,这均是一个十分理想的境界。对于个人,选择或自我生成一种编码规范,并坚持这个规范,同样会产生良好的效果。顺便提一下这是一个十分诱人的目标,不过并不太难实现。

每种程序设计语言都有属于自己的编码规范,编码规范可以说是经验的总结,当然也要借鉴其他的程序设计语言的规范。所以,向别人学习是十分重要的。其次,编码规范的使用是为了简化程序员的工作,“简化”的含义不是减少代码量(相反,很多时候遵从规范会带来更多的代码),而是减少程序员在维护代码时的劳动量。程序设计是一种非常复杂的工作,处理各种各样的关系是令人生畏的,而且各种关系之间还有着千丝万缕的联系。程序员应将大部分精力用来处理关系,而避免在过于细节的问题上浪费心机。如果他一眼就能够明白程序的思路和结构,那么对维护方案就会很快形成。而且,编码规范应该是一个非常人性化的规范,你可以参考,也可以修改,但是要保证易于使用。但是在一个小组中要保证大家使用同样的规范。程序设计是非常灵活的工作,只有灵活的思考,灵活的应用,才可能得到好的结果。另外,使用规范在很大程度上是为了减少程序员的记忆负担。人的思维能力是极其优秀的,而记忆则十分可怜,我们整天面对电脑,她要帮我们做得很重要的事情应该是记忆。所以尽可能发挥程序员的思维优势是我们的目标之一。

最后,程序设计工具对编码规范有很大的影响,这个影响来源于开发商的程序设计风格。同样基于C++,在Microsoft Visual C++和Borland C++ Builder中我们不会使用完全相同的编码规范。Microsoft和Borland有着各自不同的而且十分鲜明的风格。作为用户,我们可以在此基础上有所改变,但是这是有限度的。其实,在做出对供应商和开发工具的选择时,我们同时确定了我们未来的风格。

 

1. 一般的惯例

1.1   命名

命名的基本原则是名称要能够明确表示数据的功能。

Object Pascal支持长文件名。名称应该使用动词、名词或二者的组合。绝对不可以使用Delphi中定义的保留字和关键字,而且尽量不要使用其他语言中定义的保留字和关键字。尽量使用完整的词语而避免使用缩写、前缀和后缀、下划线或其它符号,不推荐使用匈牙利命名法。

命名规范是为了确保名称的可读性。以匈牙利命名法为代表的命名规范制定了许多前缀和后缀以表示数据的类型、作用域或其它各种属性。在Delphi中,你当然可用这种方法,但是这不是推荐的方法。有个原因是这类命名规范带来个太多额外的记忆任务,另外一个原因是由Delphi自身的特点决定的。Delphi的强制类型检查会自动监测所有的变量使用状况,所以只需要我们稍加留心(注意单词的大小写)而不必费劲的添加五花八门的前缀。另外,对数据的考虑要基于含义而不是类型或作用域,注意力应该放在放在程序结构、逻辑关系和设计思路上。所以在Delphi中只需要使用完整的词语组合来命名,不要考虑其它,当然应该尽可能的保持简洁。

在一些语句(比如for循环)中我们要用到若干个整形数作为计数变量。在此可以简单的使用i、j、k这三个字母作为变量名称。这是在Fortran语言中形成并被保留下来的习惯,事实证明这非常好用并且易于理解。当然,我们使用更有意义的名称会产生更好的效果,比如:MyCounter。一般来说i、j、k三个字母已完全够用了,否则应该划分出更多的过程或函数。

下面是几个例子:

1.  SongsList  //表明这是一个歌曲的列表,song使用复数表明歌曲不止一首

2.  SetCarColor  //表明这是一个设置汽车颜色的函数,若定义了一个TCar类,那么在类中就使用SetColor作为设置汽车颜色的函数成员。

另外要注意对布尔变量的命名。布尔变量的名称要能够明确的表示出True和False的含义。比如说记录某文件是否存在的变量,使用IsFileExisted,就比使用FileExisted好。

最后,永远不要将一个全局变量命名为:Temp或Tmp,但是在过程或函数中如此命名还是允许的。其实对于这条规则存在一点争议,在有的编码规范中更为严格,如此命名是绝对禁止的,即使是在过程或函数中。但是,很多时候这样命名的确很方便,尤其对于过程或函数。如果作为全局变量,很可能会出现类型不匹配的赋值语句,虽然此时编译器会给你很大的帮助,但是难以避免细小错误的发生。总之,遵守此规则会产生较好的效果,但是在必要的情况下没有什么是要严格遵守的。

 

1.2   缩进和空格

每级之间要缩进两个空格,这样会使程序层次分明,错落有致。千万不要使用制表符,因为制表符的宽度随不同的设置和应用程序的不同而难以保持一致,可不要指望你的程序只在Delphi中察看。另外要注意编辑器的使用,如果你只选择了Delphi,那么没有什么问题;如果你同时还使用了Word等文本处理器,请注意要使用适当的字体,以确保每个字母、符号的宽度相同。用Word等文本处理器打印时,同样要注意字体的选择。

空格的使用同样是为了保持程序的整洁,是程序员能够快速明白程序结构。下面是一些规范和相应的例子:

1. 每个单词之间要留有一个空格。例如:for TMyClass = class(TObject)

2. 在“=”、“<>”、“>=”、“<=”左右要留有一个空格;在“:=”和“:”右边要留有一个空格,而左边不留。例如:if a = b then a:= b;a: integer;

3. 保留字和关键字与左边的符号间要留有一个空格,与右边的符号间不留。例如:procedure ShowMessage; overload;

4. 括号的使用:在过程和函数的定义和调用中,括号与外部的单词和符号之间不留空格;与内部的单词之间不留空格。在if语句的条件判断中,与and、or等保留字之间要使用空格。例如:function Exchange(a: integer; b: integer); if (a = b) and ((a = c) or (a = d)) then … end;

 

1.3   边距

Delphi编辑器在右边大约第81个字符处留有一条暗线,实际上在Delphi的默认界面下,当分辨率在800*600时,最大化窗口将显示到该暗线左边4个字母处。因此,不要将源代码写到暗线之外,也就是说每行包括前面和中间的空格不要多于80个字符。如果语句过长,那么换行完成,换行后要缩进两个字符。这样也易于打印,在Delphi中超过暗线的部分不会被打印。如果使用Word等文字处理软件打印Delphi程序,超出的部分会调到下一行的首部,这样打印出的程序将难以阅读。所以,尽量在编写代码的时候做好一切调整,不要把这种工作留到打印的时候进行。

换行时要注意保持程序的可读性,尽量保持完整的部分。作为例子,如果函数过长,那么再换行时要将某个完整的参数说明换行,而不要只将数据类型声明换行。下面的前两种写法是正确的,后面的几种写法都是错误的:

function AdditonFiveInputNumber(a: integer; b: integer; c: integer; d: ineger;

e: integer): integer;                      //正确

 

function AdditonFiveInputNumber(

a: integer;

b: integer;

c: integer;

d: ineger;

e: integer): integer;                      //正确

 

function AdditonFiveInputNumber(a: integer; b: integer; c: integer; d:

ineger; e: integer): integer;              //错误

 

function AdditonFiveInputNumber(a: integer; b: integer; c: integer; d: ineger;

e: integer): integer;                           //错误

 

function AdditonFiveInputNumber(a: integer; b: integer; c: integer; d: ineger;

e: integer): integer;                       //错误

 

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


[Web开发]VB.NET/ASP.NET编码规范(ZT)  
教程录入: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……
    咸宁网络警察报警平台