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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

代码规范文档.docx

1、目录1 编程风格11.1 统一编程风格的意义11.2 变量命名的规则11.3 函数的命名规范31.4 函数参数规范31.5 引出函数规范41.6 注释规范42 代码组织53 代码优化63.1 代码优化的意义63.2 代码优化的方法64 调试技巧74.1 静态检查74.2 上机调试74.3 C 语言常见问题81 编程风格1.1 统一编程风格的意义 增加开发过程代码的强壮性、可读性、易维护性 减少有经验和无经验开发人员编程所需的脑力工作 为软件的良好维护性打下好的基础 在项目范围内统一代码风格 通过人为以及自动的方式对最终软件应用质量标准 使新的开发人员快速适应项目氛围 支持项目资源的复用:允许开

2、发人员从一个项目区域(或子项目团队)移动到另一个,而不需要重新适应新的子项目团队的氛围 一个优秀而且职业化的开发团队所必需的素质1.2 变量命名的规则变量的命名规则要求用“匈牙利法则”。即开头字母用变量的类型,其余部分用变量的英文意思或其英文意思的缩写,尽量避免用中文的拼音,要求单词的第一个字母应大写。即:变量名=变量类型+变量的英文意思(或缩写)对非通用的变量,在定义时加入注释说明,变量定义尽量可能放在函数的开始处。见下表:bool(BOOL)用 b 开头bIsParentbyte(BYTE)用 by 开头byFlagshort(int)用 n 开头nStepCountlong(LONG)用

3、 l 开头lSumchar(CHAR)用 c 开头cCountfloat(FLOAT)用 f 开头fAvgdouble(DOUBLE)用 d 开头dDetavoid(VOID)用 v 开头vVariantunsignedint(WORD)用 w 开头wCount unsignedlong(DWORD)用 dw 开头dwBroadHANDLE(HINSTANCE)用 h 开头hHandleDWORD用 dw 开头dwWordLPCSTR(LPCTSTR)用 str 开头strString用 0 结尾的字符串用 sz 开头szFileName对未给出的变量类型要求提出并给出命名建议给技术委员会。、

4、指针变量命名的基本原则为: 对一重指针变量的基本原则为:“p”+变量类型前缀+命名如一个 float*型应该表示为 pfStat对多重指针变量的基本规则为:二重指针:“pp”+变量类型前缀+命名三重指针:“ppp”+变量类型前缀+命名、全局变量用 g_开头,如一个全局的长型变量定义为 g_lFailCount,即:变量名=g_+变量类型+变量的英文意思(或缩写)、静态变量用 s_开头,如一个静态的指针变量定义为 s_plPerv_Inst,即:变量名=s_+变量类型+变量的英文意思(或缩写)、成员变量用 m_开头,如一个长型成员变量定义为 m_lCount;即:变量名=m_+变量类型+变量的英

5、文意思(或缩写)、对枚举类型(enum)中的变量,要求用枚举变量或其缩写做前缀。并且要求用大写。如:enumcmEMDAYSEMDAYS_MONDAY; EMDAYS_TUESDAY;、对 struct、union、class 变量的命名要求定义的类型用大写。并要加上前缀,其内部变量的命名规则与变量命名规则一致。结构一般用 S 开头如:structScmNPointintnX;/点的 X 位置intnY;/点的 Y 位置;联合体一般用 U 开头如:unionUcmLPointlonglX;longlY;类一般用 C 开头如:classCcmFPointpublic:floatfPoint;对一

6、般的结构应该定义为类模板,为以后的扩展性考虑如:templateclassCcmTVector3dpublic:TYPEx,y,z;、对常量(包括错误的编码)命名,要求常量名用大写,常量名用英文表达其意思。如:#defineCM_FILE_NOT_FOUNDCMMAKEHR(0X20B)其中 CM 表示类别。、对 const的变量要求在变量的命名规则前加入 c_,即:c_+变量命名规则;例如: constchar*c_szFileName;1.3 函数的命名规范函数的命名应该尽量用英文表达出函数完成的功能。遵循动宾结构的命名法则,函数名中动词在前,并在命名前加入函数的前缀,函数名的长度不得少于

7、 8 个字母。例如:longcmGetDeviceCount();1.4 函数参数规范、参数名称的命名参照变量命名规范。、为了提高程序的运行效率,减少参数占用的堆栈,传递大结构的参数,一律采用指针或引用方式传递。、为了便于其他程序员识别某个指针参数是入口参数还是出口参数,同时便于编译器检查错误,应该在入口参数前加入 const 标志。如:cmCopyString(constchar*c_szSource,char*szDest)1.5 引出函数规范对于从动态库引出作为二次开发函数公开的函数,为了能与其他函数以及 Windows 的函数区分,采用类别前缀+基本命名规则的方法命名。例如:在对动态库

8、中引出的一个图象编辑的函数定义为imgFunctionname(其中 img 为 image 缩写)。现给出三种库的命名前缀:、对通用函数库,采用 cm 为前缀。、对三维函数库,采用 vr 为前缀。、对图象函数库,采用 img 为前缀。、对宏定义,结果代码用同样的前缀。1.6 注释规范1) 、函数头的注释对于函数,应该从“功能”,“参数”,“返回值”、“主要思路”、“调用方法”、“日期”六个方面用如下格式注释:/程序说明开始/=/功能:从一个 String中删除另一个 String。/参数:strByDelete,strToDelete/(入口)strByDelete:被删除的字符串(原来的字

9、符串)/(出口)strToDelete:要从上个字符串中删除的字符串。/返回:找到并删除返回 1,否则返回 0。(对返回值有错误编码的要/求列出错误编码)。/主要思路:本算法主要采用循环比较的方法来从 strByDelete 中找到/与 strToDelete 相匹配的字符串,对多匹配 strByDelete/中有多个 strToDelete 子串)的情况没有处理。请参阅:/书名./=/函数名()/程序说明结束、对于某些函数,其部分参数为传入值,而部分参数为传出值,所以对参数要详细说明该参数是入口参数,还是出口参数,对于某些意义不明确的参数还要做详细说明(例如:以角度作为参数时,要说明该角度参

10、数是以弧度(PI),还是以度为单位),对既是入口又是出口的变量应该在入口和出口处同时标明。等等。、函数的注释应该放置在函数的头文件中,在实现文件中的该函数的实现部分应该同时放置该注释。、在注释中应该详细说明函数的主要实现思路、特别要注明自己的一些想法,如果有必要则应该写明对想法产生的来由。对一些模仿的函数应该注释上函数的出处。、在注释中详细注明函数的适当调用方法,对于返回值的处理方法等。在注释中要强调调用时的危险方面,可能出错的地方。、对日期的注释要求记录从开始写函数到结束函数的测试之间的日期。、对函数注释开始到函数命名之间应该有一组用来标识的特殊字符串。如果算法比较复杂,或算法中的变量定义与

11、位置有关,则要求对变量的定义进行图解。对难以理解的算法能图解尽量图解。2) 、变量的注释:对于变量的注释紧跟在变量的后面说明变量的作用。原则上对于每个变量应该注释,但对于意义非常明显的变量,如:i,j 等循环变量可以不注释。例如:longlLineCount/线的根数。3) 、文件的注释:文件应该在文件开头加入以下注释:/工程:文件所在的项目名。/作者:*,修改者:*/描述:说明文件的功能。/主要函数:/版本:说明文件的版本,完成日期。/修改:说明对文件的修改内容、修改原因以及修改日期。/参考文献:./为了头文件被重复包含要求对头文件进行定义如下:#ifndef FILENAME_H #def

12、ine FILENAME_H 其中 FILENAME 为头文件的名字。4、其他注释:在函数内我们不需要注释每一行语句。但必须在各功能模块的每一主要部分之前添加块注释,注释每一组语句,在循环、流程的各分支等,尽可能多加以注释。其中的循环、条件、选择等位置必须注释。对于前后顺序不能颠倒的情况,建议在注释中增加序号。2 代码组织代码组织是对整个项目的代码进行整理,使之更加有序。实现类似功能的文件应该放在同一个文件夹中或者同一个项目中。1) 、尽量用树形结构组织模块,即尽量保证单级调用关系,即上级调用者不要使用下级调用的模块中的函数、变量,不要有跨级调用关系,更不要有循环调用关系,可以有自身的递归调用

13、关系。2) 、给每个.c 文件建立一个.h 文件,在其中声明所定义的全部函数(可以省略 extern 修饰)和全部内部变量,确保用 extern 修饰,确保.c 文件中有对应的变量定义,确保.c 文件的变量定义之前就#include filename.h。3) 、对于模块中用到了其它模块的变量或者函数,要在.c 文件中的变量定义之前追加对应的模块头文件#include externalfilename.h;同时指示链接器(linker)链接相应模块编译后的.o 文件,不然只能通过 compiling 阶段,在 linking 阶段报告找不到汇编级函数入口的错误和定义前使用变量的违例。4) 、代码整合时,在相应的项目文件中(makefile),用 本模块的.c 文件 + 被包含的其它模块的.h 文件(或者只是用全部包含的.h 文件)来表达模块依赖关系,用.c 文件来表达编译对象。5) 、对于确实要在调用树中的多级使用到的模块,根据调用者的分布,尽量归为少数几个模块库(用一个.h+.c 文件容纳),便于日后检查调用关系图。对于比较复杂的跨级调用关系,要在被调用的库模块的.h 文件中加入#define LIB_THIS_FILENAME_H,同时在调用者的.c 文件中使用 condi

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

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