ImageVerifierCode 换一换
格式:DOCX , 页数:37 ,大小:39.39KB ,
资源ID:17322511      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17322511.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(编程开发规范Word下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

编程开发规范Word下载.docx

1、4.4.4. 有关构造函数、析构函数和赋值函数的使用 254.4.5. Serialize函数 254.5. 内存管理 274.6. 其它说明 284.6.1. 使用const提高函数的健壮性 284.6.2. 提高程序的效率 284.6.3. 一些有益的建议 29一、目的培养程序员良好的编写程序习惯,提高程序代码的安全性和可维护性。二、 软件评价1、 稳定可靠动不动就死机是不行的!2、功能齐备 目标:满足用户的功能需求 手段:实现用户的所有功能3、易学易用: 用户稍加培训就可操作,并可以自己进一步摸索充分利用面向对象的思想、软件的文档齐全4、界面漂亮美观、亲切 充分利用开发环境提供的能力 界

2、面设计风格要统一化5、好的软件 经过周密计划 经过审慎设计有着完美的内部结构和让人赏心悦目的精美外观。三、书写规范 好的书写规范,有助于提高程序的可读性,减少程序中的错误,便于大型软件的协作开发和维护。所以,请各位务必在编程过程中遵循以下的书写规范。3.1. 文件结构3.1.1. 头文件的结构1、头文件组成(1) 头文件开头处的版权和版本声明。版权和版本的声明位于头文件和定义文件的开头,主要内容有: 版权信息。 文件名称,标识符,摘要。 当前版本号,作者/修改者,完成日期。 版本历史信息。示例:/* Copyright (c) 2001,北京方正国际软件系统有限公司* All rights r

3、eserved.* * 文件名称:filename.h* 文件标识:见配置管理计划书* 摘 要:简要描述本文件的内容* 当前版本:1.1* 作 者:输入作者(或修改者)名字* 完成日期:2001年7月20日* 取代版本:1.0 * 原作者 :输入原作者(或修改者)名字2001年5月10日*/示例3-1 版权和版本的声明(2)预处理块。(3)函数和类结构声明等。2、规则1) 为了防止头文件被重复引用,应当用ifndef/define/endif结构产生预处理块。2) 用 #include 格式来引用标准库的头文件(编译器将从标准库目录开始搜索);用 #include “filename.h” 格

4、式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。3) 头文件中只存放“声明”而不存放“定义”。将成员函数的定义与声明分开,不论该函数体有多么小。3.1.2. 定义文件的结构1、定义文件组成1) 定义文件开头处的版权和版本声明(参见示例3-1)。2) 对一些头文件的引用。3) 程序的实现体(包括数据和代码)。首先定义全局函数的实现体,然后定义类成员函数的实现体。各个部分采用注释,空行等形式隔开。假设定义文件的名称为 graphics.cpp,定义文件的结构参见示例3-2。/ 版权和版本声明见示例1-1,此处省略。#include “graphics.h” / 引用头文件/ 全局函数

5、的实现体void Function1()/ 类成员函数的实现体void Box:Draw()示例3-2 C+/C定义文件的结构3.2. 程序版式3.2.1. 空行1、 在每个类声明之后、每个函数定义结束之后都要加空行。参见示例3-3(a)。2、 在一个函数体内,逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔。参见示例3-3(b)。/ 空行 void Function2()void Function3()while (condition) statement1; / 空行 if (condition) statement2; else statement3; statement4; 示例

6、3-3(a) 函数之间的空行 示例3-3(b) 函数内部的空行3.2.2. 代码行1、 一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且方便于写注释。2、 if、for、while、do等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加。这样可以防止书写失误。int width; / 宽度int height; / 高度int depth; / 深度int width, height, depth; / 宽度高度深度x = a + b;y = c + d;z = e + f;X a + b; y = c + d; z = e + f;if (widt

7、h =”、“=”、“+”、“*”、“%”、“&”、“|”、“”这类操作符前后不加空格。8) 对于表达式比较长的for语句和if语句,为了紧凑起见可以适当地去掉一些空格,如for (i=0; i10; i+)和if (a=b) & (c= 2000) / 良好的风格if(year=2000) / 不良的风格if (a=d) / 良好的风格if(a=b&c=d) / 不良的风格For (i=0; i+) / 良好的风格For(i=0;ii+) / 不良的风格For (i = 0; I 10; i +) / 过多的空格x = a b ? a : b;x=aFunction(); / 不要写成 b -

8、 Function();示例3-5 代码行内的空格3.2.4. 对齐和缩进1) 程序的分界符和应独占一行并且位于同一列,同时与引用它们的语句左对齐。 之内的代码块在右边数格处左对齐。2) 实现(成员)函数时,可能需要几个小功能模块。每个小模块之间最好用间隔起来,以保证每个小模块之间的局部变量互不干扰。尽量避免出现各个小模块之间公用的局部变量,因为上个模块可能会在局部变量中留下下个模块不希望的值 void CmyClass:DoSomething(.)int i = 0, j = 0, k = 0;/ 小功能模块1使用i, j, k/ 小功能模块2使用i, j/ 小功能模块3使用kvoid CM

9、yClass: int i = 0, j = 0, k = 0; / 小功能模块1使用i, j, k int i = 0, j = 0; / 小功能模块2使用i, j int k = 0; 示例3-6(a) 局部变量相互干扰 示例3-6(b) 独立的局部变量3) 统一采用Tab键采用4空格的缩进格式,缩进要用Tab键,不要采用空格。3.2.5. 长行拆分1、 代码行最大长度宜控制在70至80个字符以内。代码行不要过长,否则眼睛看不过来,也不便于打印。2、 长表达式要在低优先级操作符处拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要进行适当的缩进,使排版整齐,语句可读。if (v

10、ery_longer_variable1 = very_longer_variable12) (very_longer_variable3 = very_longer_variable14) (very_longer_variable5 Draw(); / 类的成员函数7、 用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。int minValue;int maxValue;int SetValue();int GetValue();8、 尽量避免名字中出现数字编号,如Value1,Value2等,除非逻辑上的确需要编号。3.3.2. 变量和常量命名变量的命名要遵循匈牙利命名法。这样可

11、由命名得知变量的类型和用途,它通过在数据和函数名中加入额外的信息以增进程序员对程序的理解。1、 变量和参数用小写字母开头的单词组合而成。类型缩写约定如下:n - int u - UINTw - WORDdw - DWORDb - BOOLby - BYTEch - CHARsz - CHAR ARRAYl - LONGf - floatd - doubleq - SINT64uq - UINT64v - voidfn - functionh - HANDLErect - RECT, Crectpt - POINT, Cpoint2、 常量全用大写的字母,用下划线分割单词。 const int

12、MAX = 100; const int MAX_LENGTH = 100;3、 静态变量加前缀s_4、 指针前面加上p5、 全局变量加上前缀g_6、 类中的成员变量加上前缀m_3.3.3. 类和函数的命名1、 类名和函数名用大写字母开头的单词组合而成。2、 所有的类以C作为前缀,对话框的类以Dlg作为后缀。3.3.4. ID的命名VC中用到大量的资源来管理ID,对于这些ID的命名必须遵循一定的命名规则定义。有关该部分的命名,有待进一步整理和统一。四、 开发规范4.1. 常量的使用程序中通常情况下,不允许直接在程序中填写数字或字符串,否则的话,程序的可读性极差,以后的维护人员很难理解程序中,一

13、个“1”或“3”的含义;同时难以维护,如果该数字或字符串需要改变,一个地方一个地方的改正即麻烦又不安全。所以必须将程序中的直接出现的数字或字符串,以常量的形式加以定义。4.1.1. const 与 #define在C+ 程序中只使用const常量而不使用宏常量,即const常量完全取代宏常量。4.1.2. 常量定义规则1、 需要对外公开的常量放在头文件中,不需要对外公开的常量放在定义文件的头部。为便于管理,可以把不同模块的常量集中存放在一个公共的头文件中。2、 如果某一常量与其它常量密切相关,应在定义中包含这种关系,而不应给出一些孤立的值。const float RADIUS = 100;co

14、nst float DIAMETER = RADIUS * 2;3、 将用到的字符串放入资源文件中,以便文种的翻译与转换。Good: CString Str; Str.LoadString(IDS_TitleName); SetWindowText(Str); .AfxMessageBox(IDS_Error_String);Bad: SetWindowText(“Window Title Name”);.AfxMessageBox(“Invalid Number”);4.1.3. 类中的常量有时我们希望某些常量只在类中有效。由于#define定义的宏常量是全局的,不能达到目的,于是想当然地觉

15、得应该用const修饰数据成员来实现。const数据成员的确是存在的,但其含义却不是我们所期望的。const数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的,因为类可以创建多个对象,不同的对象其const数据成员的值可以不同。 不能在类声明中初始化const数据成员。以下用法是错误的,因为类的对象未被创建时,编译器不知道SIZE的值是什么。 class A const int SIZE = 100; / 错误,企图在类声明中初始化const数据成员 int arraySIZE; / 错误,未知的SIZE ;const数据成员的初始化只能在类构造函数的初始化表中进行,例如 A(in

16、t size); / 构造函数 const int SIZE ; A:A(int size) : SIZE(size) / 构造函数的初始化表 A a(100); / 对象 a 的SIZE值为100 A b(200); / 对象 b 的SIZE值为200 怎样才能建立在整个类中都恒定的常量呢?别指望const数据成员了,应该用类中的枚举常量来实现。例如 enum SIZE1 = 100, SIZE2 = 200; / 枚举常量 int array1SIZE1; int array2SIZE2; 枚举常量不会占用对象的存储空间,它们在编译时被全部求值。枚举常量的缺点是:它的隐含数据类型是整数,其最大值有限,且不能表示浮点数(如PI=3.14159)。4.2. 变量的使用1、禁止使用全局性的变量在面向对象的系统中,应该是所有的一切都是基于对象的。原来习惯的全局函数完全可以放在一个类中。必须使用全局变量和函数,必须提出申请。2、变量一定要初始化任何变量使用前,必须初始化。如果你声明一个变量,千万不要以为编译器会自动将之赋零值!你随手给它赋个初值并不麻烦,却会使程序更可靠,何乐而不为呢?float fTemp = 0.0;3、成员变量存取说明符的使用类中的成员变量尽可能地不定义为public变量,而通过相应的

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1