Google 的 C++ 代码规范包括了一系列关于代码格式、命名约定、注释、编程实践等方面的规则和建议。遵循这些规范有助于保持代码库的一致性,确保代码易于理解和维护。下面是Google的C++代码规范的主要内容,这些规范是Google在其内部使用的,旨在提高代码的可读性、可维护性和可重用性。
以下是一些Google C++代码规范的主要内容:
- 类型和变量名使用驼峰命名法,例如:MyClass、myVariable。
- 常量和枚举值使用全大写字母和下划线分隔,例如:MY_CONSTANT、MY_ENUM_VALUE。
- 函数名使用动词或动词短语,例如:openFile()、closeConnection()。
- 类的成员变量使用下划线作为前缀,例如:_myMemberVariable。
- 使用//或/**/注释风格,避免使用/* */注释风格。
- 使用Doxygen格式的注释,包括函数的参数、返回值和异常情况等信息。
- 函数应该尽量短小,避免超过40行。
- 函数的参数应该尽量少,最好不超过4个。
- 函数应该有明确的功能和返回值,不应该有任何副作用。
- 函数的参数应该使用const来避免意外修改。
- 类的成员变量应该尽量少,最好不超过5个。
- 类的方法应该按照一定的顺序排列,例如:构造函数、析构函数、公共方法、私有方法等。
- 类应该尽量避免使用指针和裸露的内存操作,使用智能指针和STL容器等标准库类。
- 头文件应该包含必要的声明和定义,避免包含不必要的头文件。
- 头文件应该使用#ifndef、#define和#endif来避免重复包含。
- 头文件应该按照一定的顺序排列,例如:C++标准头文件、第三方库头文件、项目内头文件等。
- 保护头文件避免多次包含(使用 #pragma once 或者 include guards)。
- 优先使用前置声明,而不是包含头文件。
- 相关的头文件和内联函数实现要在相同的头文件中。
- 尽量不要使用全局变量,尤其是在头文件中。
- 尽量将变量定义在尽可能小的作用域内。
- 对于类的成员变量和方法,使用访问控制(如 public, protected, private)来限制其可见性。
- 使用匿名命名空间或静态声明限制全局变量和函数的可见性。
- 类和结构体的名称使用驼峰式命名法(如 `MyClass`)。
- 类应该有一个显式的构造函数和析构函数。
- 尽量避免使用拷贝构造函数和赋值运算符,如果需要,请显式声明。
- 使用初始化列表初始化类成员变量。
- 将接口和实现分离,将成员函数的定义放在 `.cpp` 文件中。
- 变量名、函数名使用小写,单词之间用下划线连接(如 `my_variable`)。
- 常量命名使用 k 开头,后面跟驼峰式命名法(如 `kMyConstant`)。
- 类型名和模板参数使用驼峰式命名法(如 `MyType`)。
- 文件名使用小写,单词之间用下划线连接(如 `my_class.h` 和 `my_class.cpp`)。
- 宏命名使用全大写,单词之间用下划线连接(如 `MY_MACRO`)。
- 在代码中添加注释来解释复杂的逻辑、设计决策和边界条件。
- 使用 Doxygen 风格的注释来说明函数、类和文件的作用。
- 保持注释简洁明了,尽量避免无用的注释。
- 使用 2 个空格缩进,不使用制表符。
- 每行最多 80 个字符。
- 使用空格而不是制表符分隔代码的不同部分。
- 优先使用 C++ 的类型别名(`using`),而不是 `typedef`。
- 使用 `const` 和 `constexpr` 修饰不会改变的变量和常量。
- 尽量避免使用全局变量,使用局部静态变量代替。
- 使用 `nullptr` 而不是 `NULL` 或 `0`。
这只是 Google C++ 代码规范的一部分。为了更深入地了解这些规范以及其他相关建议,请查阅 [Google C++ Style Guide ](https://google.github.io/styleguide/cppguide.html)。
文章浏览阅读1.2w次,点赞5次,收藏16次。 题目描述任意给定 n 个整数,求这 n 个整数序列的和、最小值、最大值输入描述输入一个整数n,代表接下来输入整数个数,0 < n <= 100,接着输入n个整数,整数用int表示即可。输出描述输出整数序列的和、最小值、最大值。用空格隔开,占一行思路:因为只需要最大最小值,所以不需要全部排序,也不需要储存,先设maxi,mini变量,初始值都等于第一..._任给定n个整数,求这n个整数序列的
文章浏览阅读226次。服务器上先加载torch再加载pandas,出现如下报错:ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /root/miniconda3/lib/python3.8/site-packages/pandas/_libs/window/aggregations.cpython-38-x86_64-linux-gnu.so)_pandas version `glibcxx_3.4.29' not found
文章浏览阅读1.2k次,点赞6次,收藏25次。物业管理系统顾名思义就是管理物业的系统啦,虽然每年毕业设计都会爆出大量的XX管理系统,会让人觉得很low,但不可否认,使用管理系统作为毕业设计是上手最快,并且最容易通过的计算机专业的毕业设计。该项目是本人动手实操的一个毕业设计,从理解到具体实现简单易操作,并成功通过学校严格的毕业设计考核。该项目用到的主要技术框架为SpringBoot,不想以java为主要编程语言的同学可以跳过啦。在数据库上主要使用MySQL数据库与Mybatis进行数据管理,用户登录管理方面使用的shiro安全框架。_物业管理系统java
文章浏览阅读169次。华中科技大学硕士研究生入学考试《微型计算机原理及应用》考试大纲科目代码(886)第一部分 考 试 说 明一、考试性质《微型计算机原理及应用》是报考我校软件学院硕士生选考的专业基础课之一。考试的评价标准为高等学校的优秀本科毕业生能达到的水平,以保证被录取的考生具有较好的微型计算机理论基础和应用能力。考试对象为报考我校硕士研究生入学考试的准考考生。二、考试形式与试卷结构(一) 答卷方式:闭卷,笔试(二..._test al,81h
文章浏览阅读207次。ls -l命令查看的时间是文件最后的修改时间。改变时间:ctime:文件属性,比如权限。删除时间:dtime:文件被删除的时间。访问时间:atime:查看内容。修改时间:mtime:修改内容。_linux mtime
文章浏览阅读2.3k次。直接用白书上的翻译吧例题1 勇者斗恶龙(The Dragon of Loowater, UVa 11292)你的王国里有一条n个头的恶龙,你希望雇一些骑士把它杀死(即砍掉所有头)。村里有m个骑士可以雇佣,一个能力值为x的骑士可以砍掉恶龙一个直径不超过x的头,且需要支付x个金币。如何雇佣骑士才能砍掉恶龙的所有头,且需要支付的金币最少?注意,一个骑士只能砍一个头(且不能被雇佣两次)。_勇者斗恶龙csdn
文章浏览阅读1.2k次。可以在手机里直接安装使用。对于我们模拟练习钢琴非常有用。首先我们先启动手机,然后进入手机里的应用市场,搜索【钢琴键盘模拟器】安装到手机桌面上。 然后我们点 击【钢琴键盘模拟器】的图标,进入可操作界面。这时候会制动跳转到手机横屏界面。我们可以看到在操作界面里有模拟钢琴的黑白键盘。 同时在钢琴键盘模拟器的操作界面里,我们点击“加号”“减号”按钮可以调节黑白键盘的大小比例。 我们可以在钢琴键盘..._手机怎么安装键盘钢琴软件
文章浏览阅读4.4w次,点赞32次,收藏127次。Windows下安装git超详细图文教程_git安装教程 windows
文章浏览阅读6k次,点赞18次,收藏89次。经典马里奥小游戏新年好!祝各位朋友新年快乐!!健康平安!!!代码有部分删减,不影响理解。演示视频.具体过程:按下十字按键的中央按键开始游戏。碰到柱子边界游戏结束。累计平安通过一定数量的柱子障碍,获得积分奖励,可选择继续游戏,失败则成绩全部清零;或直接结束游戏,并存档游戏进度。具体代码片段:`timescale 1ns / 1psmodule project_..._verilog 小游戏
文章浏览阅读173次。软件设计模式一、软件设计模式的产生背景1、设计模式出处设计模式”这个术语最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977 年,美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造》(A Pattern Language: Towns Building Construction)中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行_对软件设计模式的认识
文章浏览阅读176次。梅贻琦对吴岭澜说:“人把自己置身于忙碌当中,有一种麻木的踏实,但丧失了真实,你的青春也不过只有这些日子。 什么是真实? 你看到什么,听到什么,做什么,和谁在一起 有一种,从心灵深处,满溢出来的不懊悔,也不羞耻的平和与喜悦。”1分24秒旋律的突变,配合电影中一群来路不明战机的出现,看的时候心立即就揪起来了,以为光耀遇到了敌机埋伏,旋律再次回归正常,看到了光耀队友们战机向贫民窟的孩子们投..._粗布衣茅草房 铁骨铮铮
文章浏览阅读1.5k次,点赞2次,收藏10次。一、Mapreduce 计算整数的最大值和最小值【实验目的】1)理解mapreduce执行原理2)理解map,reduce阶段3)函数的使用【实验原理】需求描述:对输入文件中数据进行计算找出这一组数据中的最大值和最小值。原始数据:1021039109200..._mapreduce使用