Delphi 程序员代码编写标准指南(9)

2008-04-09 04:31:46来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

3.5.2 结构类型

3.5.2.1 数组类型

数组类型的名字需符合它们使用的目的。该类型的名字必须加以前缀t。如果须声明该数组类型的指针,那么该指针需加以前缀p而且应立即声明在该数组声明的前面。例如:

type

pcyclearray = ^tcyclearray;

tcyclearray = array[1…100] of integer;

在实际应用中,数组的变量实例的名称应是其类型的名字去掉前缀t。

3.5.2.2 记录类型

记录类型的名字应符合使用它们的目的。其类型的声明应加以前缀t。如果要声明该记录类型的指针,就应加以前缀p并且应紧靠在类型声明的前面声明。例如:

type

pemployee = ^temployee;

temployee = record

employeename : string;

employeerate : double;

end;

3.6 语句

3.6.1 if 语句

在if/then/else语句中最常发生的行为应放在then子句中,而其它发生可能性较小的行为应放在else子句中。

尽量避免使用嵌套的if语句,在这种情形下应用多个if语句来判断各种可能。

不要使用if嵌套超过五级深度。应使代码编写得更加清晰、明了。

不要在if语句中使用不必要的圆括号。

如果在if语句中有多个条件需测试,这些条件应按计算强度由少到多的顺序从左到右排列。这样做能使编译器在编译代码时获得布尔估算逻辑的捷径,从而使你的代码获得最佳的优化。举例来说,如果条件1快过条件2,而条件2快过条件3,那么在if语句中的排列应是:

if 条件1 and 条件2 and 条件3 then

3.6.2 case 语句

3.6.2.1 一般性话题

在一个case语句中的各个独立的单元应以数字或字母顺序排列。

每一个case单元的动作行为应保持简单而不应该超过四到五行代码。如果所要执行的动作过于复杂应采用独立的过程或函数。

case语句中的else子句只有当需要缺省行为或处理错误时才使用。

3.6.2.2 格式

case语句应遵循其它结构的缩格和命名约定。

3.6.3 while 语句

在一个while语句中不建议使用exit过程来跳出循环,尽量仅使用循环条件来跳出循环。

在一个while循环中所用的初始化代码应紧靠在进入while循环前面出现而不要被其它不相关的语句隔开。

任何结束后的处理应在循环之后立即进行。

3.6.4 for 语句

for语句只有当循环次数已知的情况下才能取代while语句使用。

3.6.5 repeat 语句

repeat语句的使用同while语句一样,并且遵循同样的通用方针。

3.6.6 with 语句

3.6.6.1 一般话题

with语句应节省使用,并且带有大量的警告。避免过度使用with语句并且在with语句中小心使用多个对象、记录等等。例如:

with record1, record2 do

这些事情会使程序员感到困惑并难以发现问题所在。

3.6.6.2 格式

with 语句遵循本文档所说明的命名约定和缩格的格式规则。

3.7 结构异常处理

3.7.1 一般话题

异常的处理大量地使用在错误纠正和资源保护方面。这就是说一旦资源被分配,一个try…finally必需加以使用来保证该资源被正确的释放。这种异常的保护也是指在一个单元的initializition/finalization或一个对象的constructor/destructor中进行资源的分配和释放。

3.7.2 try…finally的使用

任何情形下,每一次的分配都应跟随一个try…finally。举例来说,下面的代码会造成可能的错误:

someclass1 := tsomeclass.create;

someclass2 ;= tsomeclass.create;

try

{ do some code }

finally

someclass1.free;

someclass2.free;

end;

一个更安全更合适的分配过程应是:

someclass1 := tsomeclass.create;

try

someclass2 := tsomeclass.create;

try

{ do some code }

finally

someclass2.free;

end;

finally

someclass1.free;

end;

3.7.3 try…except的使用

只有当在异常被触发而你想执行一些任务时才使用try…except。通常,你没有必要为了只是简单地在屏幕上显示一个错误信息而使用try…except语句,因为这会被application对象自动执行。如果你想在except子句中执行完一些任务之后调用缺省的异常处理,使用raise来重新触发异常到下一个句柄。

3.7.4 try…except…else的使用

try…except中的else子句不建议使用,因为它会打断所有的异常包括那些你没有准备的异常。

3.8 类类型

3.8.1 命名和格式

类类型的名称应符合使用它们的目的。类型名字应加以前缀t以表明这是一个类型的定义 - 例如:

type

tcustomer = class(tobject)

类型的实例通常是没有前缀t的类型的名字 - 例如:

var

customer :tcustomer;

注意:查阅“构件类型的命名标准”来获得更多有关构件命名的信息。

3.8.2 域

3.8.2.1 命名/格式

类的域名遵循与变量标识符同样的约定除了它们应以f为前缀,来表明这是一个域的名称。

3.8.2.2 可视化

所有的域都必需是私有的。想在类的范围之外存取域得通过属性来使用。

3.8.3 方法

3.8.3.1 命名/格式

方法的命名应遵循本文档中有关过程和函数的约定叙述。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:全透明窗体(效果比较好)

下一篇:判断MonthCalander中鼠标点中了日期还是翻页按钮!