_C_语言编程规范(v1.1).doc_第1页
_C_语言编程规范(v1.1).doc_第2页
_C_语言编程规范(v1.1).doc_第3页
_C_语言编程规范(v1.1).doc_第4页
_C_语言编程规范(v1.1).doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言编程规范修订履历版本修订者修正日期修正内容1.0江朝阳2009-9-22初稿1.1肖渺2009-9-22修改增删以下内容:1) 对源程序、函数原型的注释2) 数据结构声明、关键程序代码段注释声明3) 函数的几点说明1. 程序块要采用缩进风格编写,缩进的空格数为4个。说明:对于由开发工具自动生成的代码可以有不一致。2. 较长的语句(80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。示例:perm_count_msg.head.len = NO7_TO_STAT_PERM_COUNT_LEN+ STAT_SIZE_PER_FRAM * sizeof( _UL );report_or_not_flag = (taskno ),后不应加空格。说明:采用这种松散方式编写代码的目的是使代码更加清晰。由于留空格所产生的清晰性是相对的,所以,在已经非常清晰的语句中没有必要再留空格,如果语句已足够清晰则括号内侧(即左括号后面和右括号前面)不需要加空格,多重括号间不必加空格,因为在C/C+语言中括号已经是最清晰的标志了。在长语句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局部不加空格。给操作符留空格时不要连续留两个以上空格。 示例:(1) 逗号、分号只在后面加空格。int a, b, c; (2)比较操作符, 赋值操作符=、+=、算术操作符+、%,逻辑操作符&、&、位域操作符= MAX_TIME_VALUE) a = b + c;a *= 2;a = b 2; (3)!、+、-、&(地址运算符)等单目操作符前后不加空格。*p = a; / 内容操作*与内容之间flag = !isEmpty; / 非操作!与内容之间p = &mem; / 地址操作& 与内容之间i+; / +,-与内容之间 (4)-、.前后不加空格。p-id = pid; / -指针前后不加空格 (5) if、for、while、switch等与后面的括号间应加空格,使if等关键字更为突出、明显。if (a = b & c d)4. 一般情况下,源程序有效注释量在20以上。5. 源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等。示例:下面这段源文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。*.h、*.c 源文件文件头:/* fileOracle.h* brief Oracle数据库接口*版本信息: %W%E%U% n* 开发记录: 由编写初稿(200x年x月) n* 修改记录:*-n*湖南创发科技有限公司版权所有 n*Copyright(C)200x TransFarTechnology Ltd.Allrightsreserved.*/6. 函数头部应进行注释,列出:函数的目的/功能、输入参数、输出参数、返回值、调用关系(函数、表)等。示例:下面这段函数的注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。/* brief 创建数据库连接池* *param poolUserName 连接池用户名* param poolPassword 连接池用户口令* param dbServer 数据库服务器* param connMin 最小连接数* param connMax 最大连接数* param connIncr 连接数增量* return 创建成功时,返回指向数据库连接池的指针;* 否则抛出database_error异常。*/上述格式的优点是便于使用docxgen之类的文档工具导出联机帮助文件!7. 边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。8. 避免使用不易理解的数字,用有意义的标识来替代。涉及物理状态或者含有物理意义的常量,不应直接使用数字,必须用有意义的枚举或宏来代替。示例:如下的程序可读性差。if (Trunkindex.trunk_state = 0)Trunkindex.trunk_state = 1;. / program code应改为如下形式。#define TRUNK_IDLE 0#define TRUNK_BUSY 1if (Trunkindex.trunk_state = TRUNK_IDLE)Trunkindex.trunk_state = TRUNK_BUSY;. / program code9. 函数的规模尽量限制在200行以内。10. 避免设计多参数函数,不使用的参数从接口中去掉。说明:目的减少函数间接口的复杂度。11. 函数的返回值要清楚、明了,让使用者不容易忽视错误情况。说明:函数的每种出错返回值的意义要清晰、明了、准确,防止使用者误用、理解错误或忽视错误返回码。12. 数据结构声明(包括数组、结构、类、枚举等),如果其命名不是充分自注释的,必须加以注释。对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释放在此域的右方。示例:可按如下形式说明枚举/数据/联合结构。typedefstruct u_char code; /*code*/u_char id; /*identifier*/u_short plen; /*packagelength*/u_char vectorAUTH_VECTOR_LEN; /*authenticator认证字*/u_char dataRAD_PKG_LEN-20; /*4K-20bytes存放AVPs*/RAD_PKG;13. 关键程序代码段涉及到的算法和数据结构,建议用ASCII图表的方式来配合注释说明.DEMO 1: /* 实现文件合并与提取接口。 * Definedin/usr/include/ar.h*COMMONARCHIVEFORMAT*ARCHIVEFileOrganization:*_*|_ARCHIVE_MAGIC_STRING_|*|_ARCHIVE_FILE_MEMBER_1_|*|*|ArchiveFileHeaderar_hdr|*|.|*|MemberContents|*|1.Externalsymboldirectory|*|2.Textfile|*|_|*|_ARCHIVE_FILE_MEMBER_2_|*|ar_hdr|*|.|*|MemberContents(.oortextfile)|*|_|*|.|*|.|*|.|*|_|*|_ARCHIVE_FILE_MEMBER_n_|*|ar_hdr|*|.|*|MemberContents|*|_|*/DEMO 2:/* 1)Big-endian(Networkorder /RISCCPU architecture)* Memory* |.|8-bitatomicelementsize|.|16-bitatomicelementsize* |0x0A|a|0x0A0B|a* |0x0B|a+1|0x0C0D|a+1* |0x0C|a+2* |0x0D|a+3* |.|* 2)Little-endian(X86 architecture)* Memory* |.|8-bitatomicelementsize|.|16-bitatomicelementsize* |0x0D|a|0x0C0D|a* |0x0C|a+1|0x0A0B|a+1* |0x0B|a+2* |0x0A|a+3* |.|*/14. 关于函数1、对所调用函数的错误返回码要仔细、全面地处理,程序中的函数/过程如果不是void返回的话,要求一定要检

温馨提示

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

评论

0/150

提交评论