分享
 
 
 

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

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

编码标准主要是为开发组提供一种编程时的准则,使项目开发人员在编程时有一致格式可遵循。这样,开发组中每个编程人员编写的代码能够被其他人理解,从而提高代码的可维护性,使得一套多人写的软件就像一人写的,使得代码更易理解。这要求大家使用一致的代码样式。

那么,之所以老生常谈介绍这些标准,是因为当新的开发人员加入项目开发组时,有的可能还不熟悉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,因为这将阻塞所有的异常,包括你没有准备处理的异常。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有