1、 3.4.3 全局变量的使用3.5 类型 3.5.1 大写约定 3.5.1.1 浮点指针类型 3.5.1.2 枚举类型 3.5.1.3 变数和ole变数类型 3.5.2 结构类型 3.5.2.1 数组类型 3.5.2.2 记录类型3.6 语句 3.6.1 if 语句 3.6.2 case 语句 3.6.2.1 一般性话题 3.6.2.2 格式 3.6.3 while 语句 3.6.4 for 语句 3.6.5 repeat 语句 3.6.6 with 语句 3.6.6.1 一般话题 3.6.6.2 格式3.7 结构异常处理 3.7.1 一般话题 3.7.2 tryfinally的使用 3.7.
2、3 tryexcept的使用 3.7.4 tryexceptelse的使用3.8 类类型 3.8.1 命名和格式 3.8.2 域 3.8.2.1 命名/格式 3.8.2.2 可视化 3.8.3 方法 3.8.3.1 命名/格式 3.8.3.2 使用静态的方法 3.8.3.3 使用虚拟/动态的方法 3.8.3.4 使用抽象的方法 3.8.3.5 属性存取方法 3.8.4 属性 3.8.4.1 命名/格式 3.8.4.2 使用存取的方法四、文件4.1 工程文件 4.1.1 命名4.2 窗体文件 4.2.1 命名4.3 数据模板文件 4.3.1 命名4.4 远端数据模板文件 4.4.1 命名4.5
3、Unit文件 4.5.1 通用Unit结构 4.5.1.1 unit的名字 4.5.1.2 uses子句 4.5.1.3 interface部分 4.5.1.4 implementation部分 4.5.1.5 initialization部分 4.5.1.6 finalization部分 4.5.2 窗体单元 4.5.2.1 命名 4.5.3 数据模板单元 4.5.3.1 命名 4.5.4 一般目的单元 4.5.4.1 命名 4.5.5 构件单元 4.5.5.1 命名4.6 文件头五、窗体和数据模板5.1 窗体 5.1.1 窗体类型命名标准 5.1.2 窗体实例命名标准 5.1.3 自动创建
4、窗体 5.1.4 模式窗体实例化函数5.2 数据模板 5.2.1 数据模板命名标准 5.2.2 数据模板实例命名标准六、包6.1 使用运行包和设计包的比较6.2 文件命名标准七、构件7.1 用户自定义构件7.2 构件单元7.3 使用注册单元7.4 构件实例命名约定7.5 构件的前缀7.5.1 Standard页7.5.2 Additional页7.5.3 Win32页7.5.4 System页7.5.5 Internet页7.5.6 Data Access页7.5.7 Data Controls页7.5.8 Decision Cube页7.5.9 QReport页7.5.10 Dialogs页
5、7.5.11 Win3.1页7.5.12 Samples页7.5.13 ActiveX页7.5.14 Midas页八、注释 8.1 文件头注释 8.2 函数或过程头注释 8.3 块注释 8.4 关键语句注释九、其他 9.1 数据库相关命名原则 9.2 Delphi系统常量 9.3 基本提示信息 9.4 基本编程要求本文档详述了在Delphi 4开发者指南下进行编程的代码编写标准。在Delphi 4开发者指南中包含本文档的目的在于阐述一种方法,通过该方法,开发小组可以在他们所编写的代码中保持一贯的风格。这样做的目的是使在开发小组中的每一个程序员都可以明白其他程序员的代码。这有助于提高代码编写的可
6、读性和使用的一贯性。本文档并不意味着包含了所有存在于代码中的标准。但是,它的内容已足够帮你起个好头。你可以自由的增加修改这些标准来满足你的需要。但我们不赞成你偏离这些由Borland开发人员所使用的标准太远。我们推荐这么做是因为一旦有新的程序员加入到你的开发小组中,而他们最喜欢和最熟悉的是Borland的标准。与大多数代码标准文档一样,本文档也会根据需要进行改动。因此,你可以到 Developers Network 和其他一些资源,在那儿可以找到你所需的信息。为增加可读性,依照程序的逻辑关系(循环语句、选择语句等),采用锯齿状排版格式,缩格是指在每一级有两个空格。不要在源代码中保留tab字符,
7、这是因为tab字符会随着不同用户的不同设置和不同的资源管理工具(打印、文档、版本控制等)而代表不同的宽度。你可以通过关闭Environment选项对话框中Editor页上的“Use tab character”和“Optimal fill”检查框(通过Tools|Environment)来禁止保存tab字符。代码行的左右边界一般会被设置成80字符宽。通常,源码不会超出这个边界,但这个方针会有一些弹性。不管是否有可能,那些超出到另一行的语句会在一个逗号或其他操作符之后与前面的语句相连。当一个语句被打断相连时,它应比原来的那一行语句缩进两个字符。Begin 子句应写在独立的一行。例如,下面第一行是
8、错误的写法而第二行是正确的。 for I := 0 to 10 do begin /错误,begin同for在同一行= 0 to 10 do /正确,begin出现在独立的一行 begin这个规则的例外是当begin子句的出现是作为一个else子句的一部分参考例子:if some statement thenbegin endelse begin someOtherStatement;end;end 语句总是出现在独立的一行。当begin语句不是一个else子句的一部分时,相应的end语句永远缩进到与begin部分相对应的位置。不要在括号与括号之间的字符中间留下空格。下面的例子示范了错误的与正
9、确地使用括号中的空格: CallProc( Aparameter ); /错误 CallProc(Aparameter); /正确不要在一个语句中使用不必要的括号。括号只应在源代码中需要的地方使用。以下的例子示范了错误和正确的使用:if (I = 42) then /错误 多余的括号if (I = 42) or (J = 42) then /正确 需要括号Object Pascal 保留字和关键字永远是全部小写。3.3.1 命名/格式化例程的名字通常应该以大写的字母开头并且中间错落分明以便于增强其可读性。下面是一个格式不正确的过程名称: procedure thisisapoorlyforma
10、ttedroutinename;下面是一个合适的大小写过程名称的例子: procedure ThisIsMuchMoreReadableRoutineName;过程的名称应该同它的内容相符。一个会导致某种行为的过程应以动词开头。例如: procedure FormatHardDrive;一个用于设置输入参数的过程应以单词set作为前缀,例如: procedure SetUserName;一个用来取得某个值的过程应以单词get作为前缀,例如: procedure GetUserName : string;3.3.2 形式参数3.3.2.1 格式化如果有的话,相同类型的形参应合并在一个语句中: p
11、rocedure Foo(Param1, Param2, Param3 : Integer; Param4 : string);3.3.2.2 命名所有形参的名字应是十分符合它们所代表的意义,特别是应该以传送到例程中的标志符的名称为基础。一个好的参数名称应以字符A为前缀 例如: procedure SomeProc(AuserName : AuserAge : integer);“A”前缀按约定表示该参数的名称是与类类型中的一个属性或域的名称相对应的。3.3.2.3 参数的排序下面的形参的顺序重点说明了注册者调用约定调用的好处。 最常用的参数应放在第一位,其它的参数应按从左到右的顺序排列。 输
12、入参数列表应放在输出参数列表的左边。 将通用的参数放在特殊参数的左边,例如: procedure SomeProc(Aplanet, AContinent, Acountry, Astate, Acity) 排序有可能有些例外,比如事件的处理。类型为TObject的Sender参数经常放在第一位。3.3.2.4 常量参数当一个参数为记录型、数组类型、ShortString、或接口类型并且在例程中不被改变时,这些参数应做上常量标记。这样做会让编译器更加有效率的产生有关这些不改变的参数的代码。而例程中另外一些非变参数也可常量来传送。尽管这样做没有产生任何效果和提高效率,这将会给调用例程的使用者提供
13、更多的信息。3.3.2.5 名称的冲突当使用拥有两个名称相同的例程的两个单元时,如果你调用该例程时,在uses子句中排在后面的单元中的例程将会被调用。为了解决这种“在uses子句上的模糊”冲突,要在调用该例程时写上相关的单元的前缀,例如: sysUtile.FindClose(SR);或 windows.FindClose(Handle);3.4.1 变量的命名和格式变量的命名应以使用它们的目的相符循环控制变量应采用一个单独的字符作为名字,比如 I,J,或K,也可以采用更加有意义的名字,比如 UserIndex。逻辑变量的名字应能充分表达准确的真或假的意思。3.4.2 局部变量一个过程中的局部变量应遵循所有其它变量的使用和命名约定。临时变量的取名应合理。如果必须的话,在一进入例程就应初始化局部变量。局部的AnsiString变量会自动初始化为一个空的字符串。局部接口和派分接口类型变量将会自动初始化为nil,并且局部变数和ole变数类型变量会自动初始化为Unassigned3.4.3 全局变量的使用使用全局变量是不推
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1