、文档、版本控制等)而代表不同的宽度。 你可以通过关闭 Environment 选项对话框中 Editor 页上的 “Use tab character” “Optimal fill” 和 检查框(通过 Tools|Environment)来禁止保存 tab 字符。 2.2 页边空格 页边空格会被设置成 80 字符宽。通常,源码不会超出这个边界,但这个方针会有一些弹性。 不管是否有可能, 那些超出到另一行的语句会在一个逗号或其他操作符之后与前面的语句相 连。当一个语句被打断相连时,它应比原来的那一行语句缩进两个字符。 2.3 Begin...End 配对 Begin 子句应写在独立的一行。例如,下面第一行是错误的写法而第二行是正确的。 for I := 0 to 10 do begin //错误,begin 同 for 在同一行 for I := 0 to 10 do //正确,begin 出现在独立的一行 begin 这个规则的例外是当 begin 子句的出现是作为一个 else 子句的一部分-参考例子: if some statement then begin ... end else begin someOtherStatement; end; end 语句永远出现在独立的一行。 当 begin 语句不是一个 else 子句的一部分时,相应的 end 语句永远缩进到与 begin 部分相对 应的位置。 三、Object Pascal 3.1 括号
永远不要在括号与括号之间的字符中间留下空格。 下面的例子示范了错误的与正确地使用括 号中的空格: CallProc( Aparameter ); //错误 CallProc(Aparameter); //正确 永远不要在一个语句中使用不必要的括号。 括号只应在源代码中需要的地方使用。 以下的例 子示范了错误和正确的使用: if (I = 42) then //错误 - 多余的括号 if (I = 42) or (J = 42) then //正确 - 需要括号 3.2 保留字和关键字 Object Pascal 保留字和关键字永远是全
部小写。 3.3 过程和函数(例程) 3.3.1 命名/格式化 例程的名字永远应该以大写的字母开头并且中间错落分明以便于可读性。 下面是一个不正确 格式的过程名称: procedure thisisapoorlyformattedroutinename; 下面是一个合适的大小写例程名称的例子: procedure ThisIsMuchMoreReadableRoutineName; 例程的名称应该同它的内容相符。一个会导致某个行为的例程应以动词开头。例如: procedure FormatHardDrive; 一个用于设置输入参数的例程应以单词 set 作为前缀,例如: procedure SetUserName; 一个用来接收某个值的例程应以单词 get 作为前缀,例如: procedure GetUserName : string; 3.3.2 形式参数 3.3.2.1 格式化 如果有的话,相同类型的形参应合并在一个语句中: procedure Foo(Param1, Param2, Param3 : Integer; Param4 : string); 3.3.2.2 命名
所有形参的名字应是十分符合它们所代表的意义, 特别是应该以传送到例程中的标志符的名 称为基础。一个好的参数名称应以字符 A 为前缀 - 例如: procedure SomeProc(AuserName : string; AuserAge : integer); “A”前缀按约定表示该参数的名称是与类类型中的一个属性或域的名称相对应的。 3.3.2.3 参数的排序 下面的形参的顺序重点说明了
注册者调用约定调用的好处。 - 最
常用的参数应放在第一位,其它的参数应按从左到右的顺序排列。 - 输入参数列表应放在输出参数
列表的左边。 - 将通用的参数放在特殊参数的左边,例如: procedure SomeProc(Aplanet, AContinent, Acountry, Astate, Acity) - 排序有可能有些例外, 比如事件的处理。 类型为 TObject 的 Sender 参数经常放在第一位。 3.3.2.4 常量参数 当一个参数为记录型、数组类型、ShortString、或接口类型并且在例程中不被改变时,这些 参数应做上常量标记。这样做会让编译器更加有效率的产生有关这些不改变的参数的代码。 而例程中另外一些非变参数也可常量来传送。 尽管这样做没有产生任何效果和提高效率, 这 将会给调用例程的使用者提供更多的信息。 3.3.2.5 名称的冲突 当使用拥有两个名称相同的例程的两个单元时,如果你调用该例程时,在 uses 子句中排在 后面的