C++编程规范 下载本文

错误!未指定书签。

1 简介

为规范项目中以C++ 为基础语言的代码风格,提到代码的健壮性、可维护性,提高开发效率,特制定本规范。

本规范具有法律效力,除特别说明,或者项目组得到职权部门书面核准,本规范必须执行。

1.1 目的

颁布本规范的目的是:

1. 增加代码的健壮性、可读性、易维护性;减少有经验和无经验开发人员编程所需的脑力

工作;

2. 在项目范围内统一代码风格;

3. 通过人为以及自动的方式对最终软件应用质量标准; 4. 使新的开发人员快速适应项目环境;

5. 支持项目资源的复用:允许开发人员从一个项目区域(或子项目团队)移动到另一个,

而不需要重新适应新的子项目团队的氛围。

1.2 适用范围

本规范适用于公司所有以C++语言为基础的平台下开发的项目。

1.3 概述

本规范包括内容: 1. 2. 3. 4. 5.

如何组织项目代码;

编程风格(如何编写实际的源代码); 如何记录源代码;

代码内名称和源文件所使用的命名约定;

何时使用某些语言结构以及何时应避免某些语言结构。

2 基本原则

1. 清晰、可理解的源代码是影响软件可靠性和可维护性的主要因素。清晰、可理解的代码

可以表示为以下三个简单的基础原理:

? 最小混淆:软件的生存期中,源代码的读远比写多,规范、标准更是这样。理想情况下,

源代码读起来应该象英语一样描述了所要做的事,这同时还带来了它执行的好处。程序本质上是为人编写,而不是为计算机编写的。阅读代码是一个复杂的脑力过程,它可由统一标准来简化,在本文中还指最小混淆原则。整个项目中统一样式是软件开发团队在编程标准上达成一致的主要原因,它不应视为一种惩罚或对创造性和生产力的阻碍。

? 维护的唯一点:只要可能,设计决策就应在源中只表述一点,它的多数后果应程序化的派

生于此点。不遵守这一原则严重损害了可维护性、可靠性和可理解性。

? 最小干扰:避免将源代码与可视干扰(如内容较少或对理解软件目的不起作用的信息)相

混合:

2. 所表达的精神不过于苛刻;而对正确安全的使用语言特性提供指导。优秀软件的关键在机密

Page 1 of 23

? ? ? ?

于:

了解每一个特性以及它的限制和潜在的危险; 确切了解此特性可安全的使用于哪一个环境中; 做出使用高度可视特性的决定; 在合适的地方小心适度的使用特性。

3 文件结构

每个C++/C程序通常分为两个文件。一个文件用于保存程序的声明(declaration),称为头文件。另一个文件用于保存程序的实现(implementation),称为定义(definition)文件。

C++/C程序的头文件以“.h”为后缀,C程序的定义文件以“.c”为后缀,C++程序的定义文件通常以“.cpp”为后缀(也有一些系统以“.cc”或“.cxx”为后缀)。

3.1 版权和版本的声明

版权和版本的声明位于头文件和定义文件的开头,主要内容有: 1. 2. 3. 4.

版权信息。

文件名称,标识符,摘要。

当前版本号,作者/修改者,完成日期。 版本历史信息。

/**

* Copyright (c) 2004,光庭导航数据(武汉)有限公司 * All rights reserved. *

* 文件名称:filename.h

* 摘要:简要描述本文件的内容 *

* 当前版本:1.1

* 作者:输入作者(或修改者)名字 * 完成日期:2004年×月×日 *

* 取代版本:1.0

* 原作者:输入原作者(或修改者)名字 * 完成日期:2004年 月 日 **/

【说明】

关于类的版权和版本申明要保持C++工程和Rose UML模型的统一,鉴于在Rose UML模型中编写这些声明比较麻烦导致工作量增加,所以可以在VC中使用“VC助手”工具帮助快速编写该类的版权和版本申明,在VC中编写好申明后要将该C++工程反转到Rose UML模型中,以保持C++工程和Rose UML模型的统一。

使用VC助手的方法:

1. 点击助手工具栏的Options按钮 2. 点击Completion页面的Edit按钮 3. 找到 机密

Page 2 of 23

/**:

/************************************************************************/ /* ? */

/************************************************************************/ 修改为: /**: /**

* Copyright (c) 2004,光庭导航数据(武汉)有限公司 * All rights reserved. * ?

* 文件名称:filename.h

* 摘要:简要描述本文件的内容 *

* 当前版本:1.1

* 作者:输入作者(或修改者)名字 * 完成日期:2004年 月 日 *

* 取代版本:1.0

* 原作者:输入原作者(或修改者)名字 * 完成日期:2004年 月 日 **/

使用方法:在VC中输入\等待出现提示,然后回车即出现类注释。

? 【提示3-1-1】通过上述方法可以在“VC助手”中编辑各种模板以提高编写代码的效率。

3.2 头文件的结构

头文件由三部分内容组成: 1. 2. 3. ? ?

头文件开头处的版权和版本声明。 预处理块。

函数和类结构声明等。 【规则3-2-1】为了防止头文件被重复引用,应当用ifndef/define/endif结构产生预处理块。 【规则3-2-2】用 #include 格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。

? 【规则3-2-3】用 #include “filename.h” 格式来引用非标准库的头文件(编译器将从用户

的工作目录开始搜索)。

? 【规则3-2-4】头文件中只存放“声明”而不存放“定义”

在C++ 语法中,类的成员函数可以在声明的同时被定义,并且自动成为内联函数。这虽然会带来书写上的方便,但却造成了风格不一致,弊大于利。建议将成员函数的定义与声明分开,不论该函数体有多么小。即使是缺省的构造函数和析构函数也不允许在头文件中定义。

? 【规则3-2-5】不提倡使用全局变量,尽量不要在头文件中出现象extern int value 这类声

明。如果要保留全局变量,那么全局变量要保存在一个类中。

3.3 定义文件的结构

机密

Page 3 of 23