e of the first property in the Properties property. Calls the appropriate TProperty GetXxxValue method to retrieve the value. SetXxxValue Sets the value of all the properties in the Properties property. Calls the appropriate TProperty SetXxxxValue methods to set the value. } 块注释通常被用在版权注释中。也被用来注释掉一些代码行。 用于解释方法的用途的块注释应当被访在方法的声明前面。 例如: // CORRECT
{ TMyObject.MyMethod This routine allows you to execute code. }
procedure TMyObject.MyMethod; begin end;
// INCORRECT
procedure TMyObject.MyMethod; {****************************************************** TMyObject.MyMethod This routine allows you to execute code. *******************************************************} begin end; 第二种块注释包含了两个字符,括号和星号:(* *)。这有时被称为星括号注释。这些注释一般只在代码开发时有用,它的主要好处是允许嵌套注释,注释嵌套少于两层。Object Pascal不支持同类型的注释嵌套,因此事实上只有一层嵌套:花括号在星括号里面,或者星括号在花括号里面。 只要在你不嵌套它们时,在该类型的注释中的其它类型的标准Pascal注释将被忽略。因此,你可以使用该语法注释一大块既有代码又有注释的代码:
(* procedure TForm1.Button1Click(Sender: TObject);
begin DoThis; // Start the process DoThat; // Continue iteration { We need a way to report errors here, perhaps using a try finally block ??? } CallMoreCode; // Finalize the process end; *)
在本例中,整个Button1Click方法被注释掉了,包括其中的任何子注释。
5.2 单行注释 单行注释由注释符//及其引导的文本组成,在文本和注释符之间有一个空格。单行注释同代码在不同行的,要同代码有相同的缩进层次。你可以使用多个单行注释形成大的注释。 在单行注释或注释组之前要有一个空行,除非它是一个块的第一行。如果注释用于几条语句,那么注释和注释组之后要跟一个空行。如果注释仅解释它后面的一行声明,则不必跟一个空行。 例如: // Open the database Table1.Open; 单行注释也可以跟在他们解释的代码声明后面。这类注释有时被引用为跟踪注释。在他们和代码之间至少要有一个空格。如果有多个跟踪注释在一个代码块中同时出现,那么这些注释需要被对齐。 例如:
if (not IsVisible) then Exit; // nothing to do Inc(StrLength); // reserve space for null terminator
要避免对每行可执行代码进行跟踪注释。在一个方法或函数的begin..end块之间限制使用注释、甚至让其为空,则在通常情况下是最好的。长的注释可以出现在方法、函数的定义之前的块注释当中。
类 6.1 类体的组织 类体的组织应当遵循下列顺序: ·域/字段声明 ·方法声明 ·属性定义 域/字段、属性、方法应当按它们的名称进行字母索引排列。 6.1.1 存取级别 除了由IDE生成的代码,类的范围指示符应当按以下顺序: ·private 声明 ·protect声明 ·public声明 ·published声明 在Object Pascal中,类成员有四种存取级别:发布的、公开的、受保护的和私有的--按存取能力递减的顺序排列。默认的存取级别是published。一般,一个成员应当被赋予最合适它的最低的存取级别。例如:只能在同一单元中被其他类存取的成员就应当被声明为私有的。同时,声明低存取级别的成员也给了编译器提高优化的机会。当然,另一方面,使用低存取级别对子类的扩展造成了困难。如果有理由认为某个类在将来某个时候会被子类化,那么应当将那些需要被子类继承扩展的成员声明为受保护的,用于存取私有数据的属性也可以提供这方面的保护。 你应当禁止对数据的公开存取。数据通常在private段声明,任何对他的公开存取应当通过GetXXX、SetXXX方法或属性来操作。 6.1.8 构造函数声明 方法需要按字母索引排列。将构造函数和析构函数放在public段的开始或按照字母索引排列都是正确的。 如果有多个构造函数或你使用了多个相同的名字,那么应当根据形参列表来排列,参数少的在参数多的前面。这意味着如果存在没有参数的构造函数的话,那么它必定出现在第一个。为了和C++Builder保持最好的兼容,应当保证构造函数的参数列表的唯一性。C++不是根据构造函数的名称来调用它的,所以区别多个构造函数的唯一方法是通过它的参数列表。
6.2 方法声明 如果可能,方法声明要出现在单独一行上。 例如: Examples:
procedure ImageUpdate(Image img, infoflags: Integer, x: Integer, y: Integer, w: Integer, h: Integer)
7.0 接口 接口的声明与类的声明有相同的形式:
InterfaceName = interface([inherited Interface]) InterfaceBody end;
接口声明应当被缩进两格,接口体缩进四格,end结束符缩进两格。 在接口声明中没有域/字段。但属性可以出现。 所有的接口方法天生就是公开的和抽象的,用不着在接口声明中包含此类关键字。 除非有其他的注意事项,否则接口的声明同类的声明具有相同的风格。
7.1 接口体组织 接口体的组织可以按以下的顺序: ·接口方法声明 ·接口属性声明 接口方法和属性的声明和类具有相同的风格。
8.0 声明 声明是由封号结尾的一行或几行代码。单一声明只有一个封号,复合声明中有多个封号。 //这是单一声明: A := B;
//这是复合声明:
begin B := C; A := B; end;
8.0.1 单一声明 如果需要将一个单一声明换行,则需要参照上一行缩进两格。 //例如:
MyValue := MyValue + (SomeVeryLongStatement / OtherLongStatement);
8.1.1 赋值和表达式声明 每一行最多有一条声明。 例如:
a := b + c; Inc(Count); //错误 a := b + c; //正确 Inc(Count); //正确
8.1.2 局部变量声明 局部变量也使用驼峰格式,不要使用引导符"F",这是为类声明中域/字段保留的。 例如:
var MyData: Integer; MyString: string;
你可以在同一行声明多个类型相同的变量:
var ArraySize, ArrayCount: Integer;
这种声明习惯在类声明中是不提倡。
8.1.3 数组声明 通常总是在左方括号之前和右方括号之后放置一个空格:
type TMyArray = array [0..100] of Char;
8.2.3 if语句 if语句至少要以两行的形式出现: 例如: //错误:
if A = B then DoSomething;
//正确
if A = B then DoSomething;
如果是复合的if语句,则应当每个分隔符一个新行: //错误:
if A = B then begin DoSomething; DoSomethingElse; end else begin DoThis; DoThat上一页 [1] [2] [3] [4] [5] 下一页 没有相关教程
|