编码规范.doc

上传人:Wo****Z 文档编号:24041784 上传时间:2021-06-19 格式:DOC 页数:12 大小:22.50KB
收藏 版权申诉 举报 下载
编码规范.doc_第1页
第1页 / 共12页
编码规范.doc_第2页
第2页 / 共12页
编码规范.doc_第3页
第3页 / 共12页
资源描述:

《编码规范.doc》由会员分享,可在线阅读,更多相关《编码规范.doc(12页珍藏版)》请在装配图网上搜索。

1、编码规范DELPHI编码规范 版本:1.0.0.0 编写:邱建伟 文件历史表 版本 作者 说明 完成日期 草稿 Jianweiqiu DELPHI编码规范 20_/7/9 前言 该规范是我参考网上资料并结合自己经验而起草的程序设计之编码规范的草稿。因为经验有限难免有许多不足的地方请指正。 目录 1. 概述 5 1.1. 目的 5 1.2. 范围 5 1.3. 术语 5 1.4. 内容 5 2. 总体说明 6 3. 外部文件的组织 7 3.1. 文件夹和文件的命名 7 3.2. 文件的管理 7 3.3. 文件夹和文件的分布 7 3.4. 文件修改的跟踪 7 4. 一般代码书写规范 8 4.1.

2、源代码格式 8 4.1.1. 缩进 8 4.1.2. 边距 8 4.2. Object Pascal语句书写规范与用法 8 4.2.1. begin.end 语句 8 4.2.2. 括号 8 4.2.3. 保留字和关键字 8 4.2.4. 变量 8 4.2.5. 类型 9 4.2.6. 语句 9 4.2.7. 函数(或例程) 9 4.2.8. 结构化异常处理 10 4.2.9. 语句构造 10 5. 正确性和可靠性 11 5.1. 正确性 11 5.2. 可靠性 11 5.2.1. 容错处理 11 5.2.2. 调试与测试 11 5.2.3. 版本封存以后的修改 11 6. 易理解性 12 6

3、.1. 命名规范 12 6.2. 注解规范 12 7. 效率和性能 13 7.1. 程序运行时间 13 8. 移植性、重用性 14 9. 附录 15 1. 概述 1.1. 目的 现代软件是多人合作的结晶程序设计风格是否统一直接关系到软件项目的可读性、可维护性以及多人合作的难易程度。在软件编程过程中风格统一有利于整个项目的顺利开展以及程序员之间的交流。如果每个程序员都按自己的习惯和风格编写程序这种因人而异的程序风格势必降低程序的可读性对软件的测试、交流、重用以及软件的维护产生极为不利的影响。 本文档主要是为Delphi开发人员提供一个源代码书写标准以及程序和文件的命名标准使他们在编程时有一致格式

4、可遵循。这样每个编程人员编写的代码能够被其他人理解。 1.2. 范围 本文档适用于所有程序设计的编码过程。本规范规定了编码规范的共性要求编程人员使用具体语言时应同时遵循具体语言的编码标准 1.3. 术语 1.4. 内容 2. 总体说明 l 贯彻软件设计中模块化、信息隐藏等原则努力提高程序的正确性、可理解性、可移植性和重用性、程序运行效率和性能。 l 要结合结构化程序设计的有关方法、原则尽可能地采用面向对象的技术和方法。 3. 外部文件的组织 3.1. 文件夹和文件的命名 l 根据系统设计所规定的结构建立相应的文件夹根据需要建立子文件夹。 l 文件夹和文件名称应能够表达其意义必须使用英文命名。

5、l 为确保平台兼容性文件夹、文件的名称必须全部使用小写字母。 l 一个单元文件或模块的名字不能与其项目中任何其他的单元的名字相同。 3.2. 文件的管理 l 在一个工程文件集中应在该文件集的根文件夹中设置一个readme.txt文件对每个模块文件进行说明。 3.3. 文件夹和文件的分布 见附件 4. 一般代码书写规范 4.1. 源代码格式 4.1.1. 缩进 l 缩进就是每级间有两个空格。 l 不要在源代码中放置制表符。 这是因为制表符的宽度随着不同的设置和代码管理实用程序(打印、文档及版本控制等)而不同。 通过使用 Tools|Editor 菜单在 Editor Porperty对话框的 S

6、ouce Option 页上不要 选中 Use Tab Character 和 Optional Fill 复选框这样制表符就不会被保存。 4.1.2. 边距 l 边距设置为80个字符。 源代码一般不会因写一个单词而超过边距但本规则比较灵活。 只要可能长度超过一行的语句应当用逗号或运算符换行。 换行后应缩进两个字符。 通过使用 Tools|Editor 菜单在 Editor Porperty对话框的 Display 页上设置Right margin; 4.2. Object Pascal语句书写规范与用法 4.2.1. begin.end 语句 l begin end语句必须单独占一行。 fo

7、r i:=0 to 10 do begin / 错, begin 与for 在同一行 for i:=0 to 10 do / 对, begin 在另外一行中begin begin end 4.2.2. 括号 l 必须在易引起误解和错误的地方使用括号但不要在一个语句中使用不必要的括号 4.2.3. 保留字和关键字 l Object Pascal 语言的保留字和关键字总是完全的小写。 4.2.4. 变量 4.2.4.1. 局部变量 l 局部变量用于过程内部如果需要的话应当在过程的入口处立即初始化变量。 局部的AnsiString类型的变量自动被初始化为空字符串 局部的接口和dispinterfac

8、e类型的变量自动被初始化为nil 局部的Variant和OleVariant类型的变量自动被初始化为Unassigned。 4.2.4.2. 全局变量 l 一般不鼓励使用全局变量。 l 不过有时候需要用到。即使如此也应当把全局变量限制在需要的环境中。 例如一个全局变量可能只在单元的实现部分是全局的。 全局数据如果将由许多单元使用就应移动到一个公用单元里被所有对象使用。 注意所有全局变量自动进行零初始化因此不要将全局变量初始化为诸如0、nil、或Unassigned等空值。 零初始化的全局变量在.E_E文件中不占空间。零初始化的数据保存在虚拟的数据段中而虚拟数据段只在应用程序启动时才分配内存。非

9、零初始化的全局数据则在.E_E文件中占空间。 4.2.5. 类型 4.2.5.1. 浮点类型 l 不鼓励使用Real类型因为它只是为了与老的Pascal代码兼容而保留的。 通常情况下对于浮点数应当使用Double。 Double可被处理器优化是IEEE定义的标准的数据格式。 当需要比Double提供的范围更大时可以使用Extend。Extend是intel专用的类型Java不支持。 当浮点变量的物理字节数很重要时(可能使用其他语言编写DLL)则应当使用Single。 4.2.5.2. Variant和OleVariant l 一般不建议使用Variant和OleVariant。 但是当数据类型

10、只有在运行期才知道时(常常是在和数据库应用的程序中)这两个类型对编程就有必要。当进行诸如自动化Active_控件的编程时应当使用OleVariant;而对于非编程则应当使用Variant。这是因为Variant能够有效地保存Delphi的原生字符串而OleVariant则将所有字符串转换为OLE字符串(即WideChar字符串)且没有引用计数功能。 4.2.6. 语句 4.2.6.1. if,case l 为了避免出现许多if语句可以使用 case 语句代替。如果多于5级不要使用 if 语句。请改用更清楚的方法。 l 不要在 if 语句中使用多余的括号。 4.2.6.2. while,for,

11、repreat l 循环、嵌套不要超过五级深度。 l 建议不要使用Exit过程来退出while循环。 如果需要的话应当使用循环条件退出循环。所有对while循环进行初始化的代码应当位于while入口前且不要被无关的语句隔开。任何业务的辅助工作都应在循环后立即进行。 l 如果循环次数是确定的应当用for语句代替while, repeat语句。 4.2.6.3. with l with语句应小心使用。 要避免过度使用with语句尤其是在with语句中使用多个对象或记录。 例如: with Record1,Record2 do 这些情况很容易迷惑编程人员且导致调试困难。 4.2.7. 函数(或例程)

12、 4.2.7.1. 形参 l 只要可能同一类型的形参应当归并在一起: procedure Foo(Param1,Param2,Param3:Imteger;Param4:string); 4.2.7.2. 常量参数 l 要使记录、数组、短字符串或接口类型的参数不能被过程修改就应当把形参标以 const 。 这样编译器将以最有效的方式生成代码保证传递的参数不可变。如果其他类型的参数希望不被过程所修改也可以标上 const 。 尽管这对效率没有影响但这给过程的调用者带来了更多的信息。 4.2.8. 结构化异常处理 4.2.8.1. tryfinally的用法 4.2.8.2. tryexcept的

13、用法 4.2.8.3. tryexceptelse的用法 l 不鼓励使用带else子句的try.except因为这将阻塞所有的异常包括你没有准备处理的异常。 4.3. 语句构造 4.3.1. 结构化要求 l 尽量只采用三种基本控制结构来编写程序。 l 循环、嵌套不要超过五级深度。 l 尽量避免使用嵌套的if语句在这种情形下应用多个if语句来判断各种可能。 l 禁止出现两条等价的支路。 l 一般应禁止GOTO语句。 l 用 CASE 实现多路分支。 l 避免从循环引出多个出口。 l 函数只有一个出口。 l 避免不必要的分支。 l 不要在同一行中写多个语句。 l 使用括号清晰地表达出逻辑表达式和算

14、术表达式的运算次序; l 利用添加空格来清晰地表示语句的成分 4.3.2. 逻辑要求 l 尽量不使用条件赋值语句。 l 不要轻易用条件分支去替换逻辑表达式。 l 避免使用测试条件“非常”; l 避免使用复杂的条件测试; 不要比较浮点数的相等如: 10.0 _ 0.1 = 1.0 不可靠 5. 正确性和可靠性 5.1. 正确性 l 程序必须首先满足正确性的要求即程序必须满足需求规格说明的有关要求。对于精心选择的合法的测试用例应该给出符合规格说明要求的结果。 l 要显式地说明一切变量所有变量在使用前必须进行初始化。并且应该在该变量作用范围的起始处进行初始化。 l 数据说明的次序应规范化先常量说明再

15、简单类型说明然后构造类型说明。 l 当多个变量出现在同一个说明语句中时变量名应按字母顺序排序以便于查找。 l 一个函数(过程)中的局部变量应遵循所有其它变量的使用和命名约定。临时变量的取名应合理。 l 尽量减少全局变量的使用只能在必须使用的时候才使用全局变量并尽量保证只在一段上下文范围内使用全局变量。如果打算在多个单元内使用全局数据应该将它们放置到一个公共的单元中然后被其它所有单元使用。 5.2. 可靠性 5.2.1. 容错处理 l 程序与环境或状态发生关系时必须主动去处理发生的意外事件。 如文件能否逻辑锁定、打印机是否联机等。 5.2.2. 调试与测试 l 程序编写完后要自己进行代码检查。

16、l 改一个错误时可能产生新的错误因此在修改前首先考虑对其它程序的影响。 l 程序编写完成后应进行必要的单元测试 5.2.3. 版本封存以后的修改 l 版本封存以后的修改一定要将老语句用注释符号(如/_ _/ )封闭不能删除或修改,并要在文件及函数的修改记录中加以记录。 6. 易理解性 6.1. 命名规范 请看附件 6.2. 注解规范 7. 效率和性能 7.1. 程序运行时间 l 写程序之前先简化算术的和逻辑的表达式; l 仔细研究嵌套的循环尽量将语句从内层往外移; l 尽量避免使用多维数组; l 尽量避免使用复杂的表; l 使用执行时间短的算术运算; l 一个表达式中不要混合使用不同的数据类型

17、; l 尽量使用整数运算和布尔表达式。 l 在非常必要时可以使用汇编语言 l 在if/then/else语句中最常发生的行为应放在then子句中而其它发生可能性较小的行为应放在else子句中。 l 如果在if语句中有多个条件需测试这些条件应按计算强度由少到多的顺序从左到右排列。这样做能使编译器在编译代码时获得布尔估算逻辑的捷径从而使代码获得最佳的优化。 注:如果条件1快过条件2而条件2快过条件3那么在if语句中的排列应是: if 条件1 and 条件2 and 条件3 then l 形参的顺序主要要考虑寄存器调用规则。最常用的参数应当作为第一个参数 8. 移植性、重用性 l 尽量使用标准库函数和公共函数。 l 重复使用的完成相对独立功能的算法或代码应抽象为公共控件或类。 l 公共控件或类应考虑面向对象思想减少外界联系考虑独立性或封装性。 l 公共控件或类应建立使用模板。 9. 附录 10. 第 12 页 共 12 页

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!