C++语言编程规范

您所在的位置:网站首页 编程语言发明顺序 C++语言编程规范

C++语言编程规范

2024-07-03 02:28:32| 来源: 网络整理| 查看: 265

前言

这里参考了《高质量C++C 编程指南 林锐》、《google C++编程指南》以及《华为C++语言编程规范》编写了这份C++语言编程规范文档,以合理使用 C++。

一、文件结构

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

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

1.1 版权和版本的声明

版权和版本的声明位于头文件的开头,主要内容有:

1)版权信息;

2)文件名称,标识符,摘要;

3)当前版本号,作者/修改者,完成日期;

4)版本历史信息 。

/* * Copyright (c) 2019,google * All rights reserved. * * 文件名称:fileName.h * 摘 要:简要描述本文件的功能和用法 * * 当前版本:1.1 * 作 者:输入作者(或修改者)名字 * 完成日期:2019 年 7 月 20 日 * * 取代版本:1.0 * 原作者 :输入原作者(或修改者)名字 * 完成日期:2019 年 5 月 10 日 */ 1.2 头文件的结构

头文件由三部分内容组成:

(1)头文件开头处的版权和版本声明。 (2)预处理块。 (3)函数和类结构声明等。

【规则 1-2-1】为了防止头文件被重复引用,应当用 ifndef/define/endif 结构产生预处理块。

【规则 1-2-2】用 #include 格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。

【规则 1-2-3】用 #include “filename.h” 格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。

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

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

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

// 版权和版本声明见示上例,此处省略。 #ifndef GRAPHICS_H // 防止 graphics.h 被重复引用 #define GRAPHICS_H #include // 引用标准库的头文件 … #include “myheader.h” // 引用非标准库的头文件 … void fun(…); // 全局函数声明 … class Box // 类结构声明 { … }; #endif 1.3 头文件依赖

【规则 1-3-1】使用前置声明尽量减少 .h 文件中 #include 的数量。

当一个头文件被包含的同时也引入了一项新的依赖 ,只要该头文件被修改,代码就要重新编译。 如果你的头文件包含了其他头文件, 这些头文件的任何改变也将导致那些包含了你的头文件的代码重新编译。因此,我们宁可尽量少包含头文件,尤其是那些包含在其他头文件中的。

使用前置声明可以显著减少需要包含的头文件数量。举例说明:头文件中用到类 File,但不需要访问File的定义,则头文件中只需前置声明 class File;无需 #include "file/base/file.h"。

在头文件如何做到使用类 Foo 而无需访问类的定义?

将数据成员类型声明为 Foo *或Foo &;

参数、返回值类型为 Foo的函数只是声明(但不定义实现);

静态数据成员的类型可以被声明为 Foo,因为静态数据成员的定义在类定义之外。

1.4 包含文件的次序

【规则 1-4-1】将包含次序标准化可增强可读性,次序如下: C库、 C++库、其他库的.h、项目内的.h。

项目内头文件应按照项目源代码目录树结构排列,并且避免使用 UNIX文件路径 .(当前目录)和 ..(父目录)。例如, google-project/src/base/logging.h 应像这样被包含:#include "base/logging.h 。示例如下:

#include // C库 #include // C库 #include // C++库 #include // C++库 #include "base/basictypes.h" // 其他库的.h #include "base/commandlineflags.h" // 其他库的.h #include "foo/public/bar.h //项目内的.h 1.5 目录结构

【规则 1-5-1】如果一个软件的头文件数目比较多(如超过十个),通常应将头文件和定义文件分别保存于不同的目录,以便于维护。

例如可将头文件保存于 include 目录,将定义文件保存于 source 目录(可以是多级目录)。

如果某些头文件是私有的,它不会被用户的程序直接引用,则没有必要公开其“声明”。为了加强信息隐藏,这些私有的头文件可以和定义文件存放于同一个目录。

二、程序的版式

版式虽然不会影响程序的功能,但会影响可读性。程序的版式追求清晰、美观,是程序风格的重要构成因素。

可以把程序的版式比喻为“书法”。好的“书法”可让人对程序一目了然,看得兴致勃勃。差的程序“书法”如螃蟹爬行,让人看得索然无味,更令维护者烦恼有加。 所以学习程序的“书法”, 很有必要。

2.1 空格还是制表位

只使用空格,每次缩进 4 个空格。有些人更加青睐每次缩进 2 个空格,也是可以的,这个纯粹看个人喜好,但如果是团队协作的话需要统一。

【规则 2-1-1】只使用空格进行缩进,不要在代码中使用 tabs,设定编辑器将 tab 转为空格。(有些编辑器已经这样默认设置了,例如Qt)

2.2 空行

空行起着分隔程序段落的作用。空行得体(不过多也不过少)能将使程序的布局更加清晰。空行不会浪费内存,虽然打印含有空行的程序是会多消耗一些纸张,但是值得。所以不要舍不得用空行。

【规则 2-2-1】在每个类声明之后、每个函数定义结束之后都要加空行。

【规则 2-2-2】在一个函数体内,逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔。

while (condition) { statement1; // 空行 if (condition) { statement2; } // 空行 statement3; } 2.3 代码行

【规则 2-3-1】 一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且方便写注释。

// 风格良好的代码行 int width; // 宽度 int height; // 高度 int depth; // 深度 // 风格不良的代码行 int width, height, depth; // 宽度 高度 深度

【规则 2-3-2】 if、for、while、do 等语句自占一行,执行语句不得紧跟其后。 不论执行语句有多少都要加{}。这样可以防止书写失误。

// 风格良好的代码行 if (width < height) { doSomething(); } // 风格不良的代码行 if (width < height) doSomething();

【建议 2-3-3】尽可能在定义变量的同时初始化该变量(就近原则)

如果变量的引用处和其定义处相隔比较远,变量的初始化很容易被忘记。如果引用了未被初始化的变量,可能会导致程序错误。本建议可以减少隐患。例如 :

int width = 10; // 定义并初绐化 width int height = 10; // 定义并初绐化 height int depth = 10; // 定义并初绐化 depth 2.4 代码行内的空格

【规则 2-4-1】关键字之后要留空格。像 if、for、while 等关键字之后应留一个空格再跟左括号 ‘(’,以突出关键字。

【规则 2-4-2】函数名之后不要留空格,紧跟左括号 ‘(’,以与关键字区别。

【规则 2-4-3】‘,’ 之后要留空格,如 fun(x, y, z)。如果 ‘;’ 不是一行的结束符号,其后要留空格,如 for (initialization; condition; update)。

【规则 2-4-4】赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如 “=”、“+=” “>=”、“



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭