WEB开发网
开发学院软件开发Delphi Delphi编码标准——一般的源代码格式规则 阅读

Delphi编码标准——一般的源代码格式规则

 2006-02-04 13:40:03 来源:WEB开发网   
核心提示:编码标准主要是为开发组提供一种编程时的准则,使项目开发人员在编程时有一致格式可遵循,Delphi编码标准——一般的源代码格式规则,这样,开发组中每个编程人员编写的代码能够被其他人理解,(3) try... except...else的用法不鼓励使用带else子句的try...except,因为这将阻塞所有的异常,从而提
编码标准主要是为开发组提供一种编程时的准则,使项目开发人员在编程时有一致格式可遵循。这样,开发组中每个编程人员编写的代码能够被其他人理解,从而提高代码的可维护性,使得一套多人写的软件就像一人写的,使得代码更易理解。这要求大家使用一致的代码样式。 那么,之所以老生常谈介绍这些标准,是因为当新的开发人员加入项目开发组时,有的可能还不熟悉Delphi的编码标准。     在这里将分以下几类来介绍这些标准: 1 一般的源代码格式规则 2过程和函数 3 文件、窗体与数据模块命名 4 包、组件命名 一般的源代码格式规则 缩进 缩进就是每级间有两个空格。不要在源代码中放置制表符。这是因为,制表符的宽度随着不同的设置和代码管理实用程序(打印、文档及版本控制等)而不同。 边距 边距设置为80个字符。源代码一般不会因写一个单词而超过边距,但本规则比较灵活。只要可能,长度超过一行的语句应当用逗号或运算符换行。换行后,应缩进两个字符。 括号 在左括号与下一字符之间没有空格。同样,右括号与前一字符也没有空格。 下面的例子演示了正确与不正确的空格。 CallPRocedure( Parameters ); // 错! CallProcedure (Parameters); // 正确! 保留字和关键字 Object Pascal语言的保留字和关键字总是完全的小写。 begin...end begin语句必须单独占一行。 例如,下面第一行是错误的,而第二行正确: for i:=0 to 10 do begin Statement end// 错, begin 与for在同一行 for i:=0 to 10 do //正确! begin 在另外一行中 begin Statement end 本规则的一个特殊情况是,当begin为else语句的一部分时。 例如: if Condition then begin Statement end else begin Statement; end end语句总单独一行。当begin不为else语句的一部分时,相应的end语句与begin语句的缩进量相同。 语句 (1) if_then_else语句 最有可能执行的情况应放在then子句中,不太可能的情况放在else子句中。 为了避免出现许多i f语句,可以使用case语句代替。 如果多于5级,不要使用i f语句。请改用更清楚的方法。 不要在i f语句中使用多余的括号。在源代码中,括号只有在确实需要时才使用。 例如: if (I=42) then // 错,括号是多余的 if (I=42) or (J=42) then // 正确,必须使用括号 如果在i f语句中有多个条件要测试,应按照计算的复杂程度从右向左排。这样,可以使代码充分利用编译器的短路估算逻辑。如果Condition1比Condition2快,Condition2比Condition3快,则if语句应这样构造:if Conditior1 and Condition2 and Condition3 then (2) case_else语句 case语句中每种情况的常量应当按数字或字母的顺序排列。 每种情况的动作语句应当简短且通常不超过4 ~ 5行代码。如果动作太复杂,应将代码单独放在一个过程或函数中。case语句的else子句只用于默认情况或错误检测。 (3) while 语句 建议不要使用exit过程来退出while循环。如果需要的话,应当使用循环条件退出循环。所有对w h i l e循环进行初始化的代码应当位于w h i l e入口前,且不要被无关的语句隔开。任何业务的辅助工作都应在循环后立即进行。 (4) for语句 如果循环次数是确定的,应当用for语句代替while语句。 (5) repeat语句 repeat语句类似于while循环,且遵循同样的规则。 (6) with语句 with语句应小心使用。要避免过度使用with语句,尤其是在with语句中使用多个对象或记录。 例如: with Record1,Record2 do 这些情况很容易迷惑编程人员,且导致调试困难。 结构化异常处理 异常处理主要用于纠正错误和保护资源。这意味着,凡是分配资源的地方,都必须使用try... finally来保证资源得到释放。不过,如果是在单元的初始/结束部分或者对象的构造器/析构器中来分配/释放资源则例外。 (1) try... finally的用法 在可能的情况下,每个资源分配应当与try... finally结构匹配。 例如: //下面代码可能导致错误 SomeClass1: = TSomeClass.Create; SomeClass2: = TSomeClass.Create; try {do some code} finally SomeClass.Free; SomeClass.Free; e n d ; //上述资源分配的一个安全方案是: SomeClass1: = TSomeClass Create; try SomeClass2: = TSomeClass Create; try {do some code} finally SomeClass2.Free; end; finally SomeClass1.Free; end; (2) try...except的用法 如果你希望在发生异常时执行一些任务,可以使用try...except。通常,没有必要为了简单地显示一个错误信息而使用try...except,因为application对象能够自动根据上下文做到这一点。如果要在子句中激活默认的异常处理,可以再次触发异常。 (3) try... except...else的用法 不鼓励使用带else子句的try...except,因为这将阻塞所有的异常,包括你没有准备处理的异常。

Tags:Delphi 编码 标准

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接