C++编码规范

上传人:野鹰 文档编号:1088319 上传时间:2017-05-27 格式:DOC 页数:46 大小:339KB
返回 下载 相关 举报
C++编码规范_第1页
第1页 / 共46页
C++编码规范_第2页
第2页 / 共46页
C++编码规范_第3页
第3页 / 共46页
C++编码规范_第4页
第4页 / 共46页
C++编码规范_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《C++编码规范》由会员分享,可在线阅读,更多相关《C++编码规范(46页珍藏版)》请在金锄头文库上搜索。

1、北京四方继保自动化股份有限公司作业指导书文件名称:C+编码规范文件编号:SF-研发中心-0X00编制 日期审核 日期批准 日期SF-研发中心-* 第 1.0版2007-1-1 发布 2007-1-1 实施北京四方继保自动化股份有限公司第 2 页 共 46 页1.目的良好的编程风格是提高程序可靠性非常重要的手段,也是在大的软件项目中多人合作开发的基础。为了提高我公司 C+源程序的质量和可维护性,通过本规范定义来规避不好的编程风格,增强代码的可读性与可维护性,以便于自己和他人阅读。2.适用范围本规范适用于软件开发中心所开发的后台软件、主站系统平台及应用软件的 C+编码。3.职责编码人员:遵照本编码

2、规范进行代码编写。代码审查人员:执行代码走查,确认实际代码与编码规范的符合性。4.相关文件高质量 C+编程指南软件中心源代码编制规范C&C+编程规范ZDH2004101401-自动化室编程规范( C 及 C+部分) 软件中心源代码编制规范SF-研发中心-* 第 1.0版2007-1-1 发布 2007-1-1 实施北京四方继保自动化股份有限公司第 3 页 共 46 页5.定义无SF-研发中心-* 第 1.0版2007-1-1 发布 2007-1-1 实施北京四方继保自动化股份有限公司第 4 页 共 46 页6.编码规范第一章 概述1.1 前言为了保证软件程序的质量,提高程序的可维护性和可测试性

3、,特制定本 C+编程规范。本规范主要规定了公司软件研发中心 C+程序的编码内容及规则,适用于公司所有使用 C+语言开发的高级应用软件模块和软件产品。 本规范中的举例,只是针对具体的某一条规范而加以说明,有可能并不符合其他的规范,例如变量定义的举例,对变量的定义做了说明,但在规范的其它举例中,并没有使用规定的定义方法,请使用者加以注意。规范中的某些内容是属于必须执行的,标有【规范】字样;某些内容是属于建议性的,标有【建议】字样。1.2 规范制定原则 方便代码的交流和维护。 只规定需要规定的事情,不要强制施加个人喜好或者过时的做法。 不影响编码的效率,不与大众习惯冲突。 使代码更加美观、阅读更为方

4、便。 正确、简单和清晰第一,坚持 KISS(Keep It Simple Software)原则。 使代码的逻辑更清晰、更易于理解。SF-研发中心-* 第 1.0版2007-1-1 发布 2007-1-1 实施北京四方继保自动化股份有限公司第 5 页 共 46 页第二章 文件结构2.1 文件名命名文件名由基本名和后缀名构成,基本名由不大于 8 个的字母和数字组成,仅允许用小写字母且以字母开头,基本名应是有意义的名字,应与程序功能相一致。后缀名由不超过 3 个字符组成,常见后缀要求如下:. name.h C +header file. name.cpp C+ source file. name.

5、inc Include file. name.def Definition (Declaration) file. name.cfg Compile declaration file注意:严禁使用中文命名文件名。2.2 程序文件内容2.2.1 源程序文件内容完整的程序文件由若干部分内容构成,各部分内容及一般顺序如下:a) 文件头部注释说明该文件模块的功能和内容(函数、外部数据说明等) 。应列出版本号,生成日期,作者,主要函数及其功能,修改日志等。b) 各种定义及类型定义Defines 和 typedefs,其顺序为:“constant” macro“function” macrotypedef

6、senumsSF-研发中心-* 第 1.0版2007-1-1 发布 2007-1-1 实施北京四方继保自动化股份有限公司第 6 页 共 46 页c) 全局(外部)数据说明Global (external) data declarations , 其顺序为:externsnon-static globalsstatic globals如果一组 defines 仅应用于某一特定的全局数据块(如标志字) ,则该 defines应紧跟在此数据说明之后,或嵌入到结构说明之中。d) 函数模块功能类似的函数应尽量放在一起,每一函数之前应有函数头部注释,主要提供函数的接口说明,内容包括函数基本功能描述、出入口

7、参数、调用关系,必要时也应包括实现算法。函数体中,根据需要可有代码块注释,它可对某个代码块的功能、编程技巧及临时变量进行说明。2.2.2 头文件内容头文件中一般允许放下列内容: 宏定义 各种数据结构说明 typedefs 说明 外部函数说明 全局变量说明【规范 2.1】头文件(*.h 文件)的开始代码部分,一定要加上 ifndef/define/ endif等预编译判断条件,防止头文件被重复包含。【规范 2.2】用 #include 格式来引用标准库的头文件(编译器将从标准库目录开始搜索) 。SF-研发中心-* 第 1.0版2007-1-1 发布 2007-1-1 实施北京四方继保自动化股份有

8、限公司第 7 页 共 46 页【规范 2.3】用 #include “filename.h” 格式来引用自定义/非标准库的头文件(编译器将从用户的工作目录或者指定的路径开始搜索) 。【规范 2.4】头文件名不应与标准函数库名相同。【规范 2.5】头文件中只应包括多个文件都需要的内容。对于功能不同的内容应放在不同的头文件中。【规范 2.6】如果源文件的个数比较多(超过 10个) ,应该根据软件需要/功能划分将源文件保存在不同的路径下,如下图所示。 工 程 目 录 include lib bin doc src 【建议 2.1】头文件保存在 include目录,程序文件保存在 source或者 s

9、rc目录(可以根据需要设置为多级目录) ,资源文件保存在 res目录,执行文件保存在 bin目录,LIB 库文件保存在 lib目录,如果有配置文件可以保存在 config目录。【建议 2.2】对于某个程序文件所私有的头文件,没有必要公开“声明” 。为了加强信息隐藏,这些私有的头文件可以存放于定义文件的子目录下,如” private/nameP.h” 。【建议 2.3】工程目录的各级子目录可以根据某种标准细分为各类子目录,每个子目录都应该包含一个 readme文件。readme 文件应该列举目录中包含的子文件及其主要作用说明。SF-研发中心-* 第 1.0版2007-1-1 发布 2007-1-

10、1 实施北京四方继保自动化股份有限公司第 8 页 共 46 页【建议 2.4】如果有需要,可以增加其他目录如 tmp等等,但建议基本结构不变。【建议 2.5】在头文件中只存放“声明”而不存放“定义” 。【建议 2.6】#include 中不能包括全路径,尽量采用相对路径。【建议 2.7】给自己的工程一个简短的编码代号如 CSFM、CSM 等,小组可以统一使用它做代码命名前缀。第三章 排版规则【规范 3.1】在一个函数体内,逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔。相对独立的程序块之间,变量说明之后必须加空行.【示例】/空行void function1( ) /空行while (c

11、ondition)statement1;/ 空行if (condition) statement2;elsestatement3;/ 空行statement4;SF-研发中心-* 第 1.0版2007-1-1 发布 2007-1-1 实施北京四方继保自动化股份有限公司第 9 页 共 46 页 /空行【规范 3.2】变量和运算符间要留有空隙,用一个空格符隔开,便于阅读。当然,特殊的单目运算符等除外,如“&” 、 “.”、 “-”、 “() ”及作为指针运算符使用时的“*” 。函数定义和调用中若出现多个参数,前一参数后应紧跟逗号运算符,并用一个空格符与后面参数隔开。【示例】int i = 0; /

12、*正确*/int i=0 ; /*错误*/a = b * c; /*正确*/a=b*c; /*错误*/if (a = b) & (a != c) /*正确*/if(a=b)&(a!=c) /*错误*/fuc(a, b, c, d) /*正确*/fuc(a,b,c,d) /*错误*/for (i = 0; i a = pPointer-b * pPointer-c /*正确*/pPointer - a = pPointer - b * pPointer - c /*错误*/int *pX = &i, y; /* 正确,此处 y不会被误解为指针*/int* pX = & i, y; /* 错误 */【规范 3.3】一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且方便于写注释。【示例】SF-研发中心-* 第 1.0版2007-1-1 发布 2007-1-1 实施北京四方继保自动化股份有限公司第 10 页 共 46 页如下例子不符合规范rect.length = 0; rect.width = 0;应如下书写rect.length = 0;rect.width = 0;【规范 3.4】if、for

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号