Google的C++代码规范_google c++代码规范-程序员宅基地

技术标签: c++  代码规范  开发语言  

        Google 的 C++ 代码规范包括了一系列关于代码格式、命名约定、注释、编程实践等方面的规则和建议。遵循这些规范有助于保持代码库的一致性,确保代码易于理解和维护。下面是Google的C++代码规范的主要内容,这些规范是Google在其内部使用的,旨在提高代码的可读性、可维护性和可重用性。

        以下是一些Google C++代码规范的主要内容:

1. 命名规范:

        - 类型和变量名使用驼峰命名法,例如:MyClass、myVariable。
        - 常量和枚举值使用全大写字母和下划线分隔,例如:MY_CONSTANT、MY_ENUM_VALUE。
        - 函数名使用动词或动词短语,例如:openFile()、closeConnection()。
        - 类的成员变量使用下划线作为前缀,例如:_myMemberVariable。

2. 注释规范:

        - 使用//或/**/注释风格,避免使用/* */注释风格。
        - 使用Doxygen格式的注释,包括函数的参数、返回值和异常情况等信息。

3. 函数规范:

        - 函数应该尽量短小,避免超过40行。
        - 函数的参数应该尽量少,最好不超过4个。
        - 函数应该有明确的功能和返回值,不应该有任何副作用。
        - 函数的参数应该使用const来避免意外修改。

4. 类规范:

        - 类的成员变量应该尽量少,最好不超过5个。
        - 类的方法应该按照一定的顺序排列,例如:构造函数、析构函数、公共方法、私有方法等。
        - 类应该尽量避免使用指针和裸露的内存操作,使用智能指针和STL容器等标准库类。

5. 头文件规范:

        - 头文件应该包含必要的声明和定义,避免包含不必要的头文件。
        - 头文件应该使用#ifndef、#define和#endif来避免重复包含。
        - 头文件应该按照一定的顺序排列,例如:C++标准头文件、第三方库头文件、项目内头文件等。

        - 保护头文件避免多次包含(使用 #pragma once 或者 include guards)。
        - 优先使用前置声明,而不是包含头文件。
        - 相关的头文件和内联函数实现要在相同的头文件中。
        - 尽量不要使用全局变量,尤其是在头文件中。

6. 作用域

        - 尽量将变量定义在尽可能小的作用域内。
        - 对于类的成员变量和方法,使用访问控制(如 public, protected, private)来限制其可见性。
        - 使用匿名命名空间或静态声明限制全局变量和函数的可见性。

7. 类与结构体

        - 类和结构体的名称使用驼峰式命名法(如 `MyClass`)。
        - 类应该有一个显式的构造函数和析构函数。
        - 尽量避免使用拷贝构造函数和赋值运算符,如果需要,请显式声明。
        - 使用初始化列表初始化类成员变量。
        - 将接口和实现分离,将成员函数的定义放在 `.cpp` 文件中。

8. 命名约定

        - 变量名、函数名使用小写,单词之间用下划线连接(如 `my_variable`)。
        - 常量命名使用 k 开头,后面跟驼峰式命名法(如 `kMyConstant`)。
        - 类型名和模板参数使用驼峰式命名法(如 `MyType`)。
        - 文件名使用小写,单词之间用下划线连接(如 `my_class.h` 和 `my_class.cpp`)。
        - 宏命名使用全大写,单词之间用下划线连接(如 `MY_MACRO`)。

9. 注释

        - 在代码中添加注释来解释复杂的逻辑、设计决策和边界条件。
        - 使用 Doxygen 风格的注释来说明函数、类和文件的作用。
        - 保持注释简洁明了,尽量避免无用的注释。

10. 格式

        - 使用 2 个空格缩进,不使用制表符。
        - 每行最多 80 个字符。
        - 使用空格而不是制表符分隔代码的不同部分。
        - 优先使用 C++ 的类型别名(`using`),而不是 `typedef`。
        - 使用 `const` 和 `constexpr` 修饰不会改变的变量和常量。
        - 尽量避免使用全局变量,使用局部静态变量代替。
        - 使用 `nullptr` 而不是 `NULL` 或 `0`。

        这只是 Google C++ 代码规范的一部分。为了更深入地了解这些规范以及其他相关建议,请查阅 [Google C++ Style Guide ](https://google.github.io/styleguide/cppguide.html)。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u014374826/article/details/131698595

智能推荐

任意给定 n 个整数,求这 n 个整数序列的和、最小值、最大值_任给定n个整数,求这n个整数序列的-程序员宅基地

文章浏览阅读1.2w次,点赞5次,收藏16次。 题目描述任意给定 n 个整数,求这 n 个整数序列的和、最小值、最大值输入描述输入一个整数n,代表接下来输入整数个数,0 < n <= 100,接着输入n个整数,整数用int表示即可。输出描述输出整数序列的和、最小值、最大值。用空格隔开,占一行思路:因为只需要最大最小值,所以不需要全部排序,也不需要储存,先设maxi,mini变量,初始值都等于第一..._任给定n个整数,求这n个整数序列的

服务器import pandas报错ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29‘ no_pandas version `glibcxx_3.4.29' not found-程序员宅基地

文章浏览阅读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

计算机专业毕业设计-物业管理系统JAVA(简单易上手)-程序员宅基地

文章浏览阅读1.2k次,点赞6次,收藏25次。物业管理系统顾名思义就是管理物业的系统啦,虽然每年毕业设计都会爆出大量的XX管理系统,会让人觉得很low,但不可否认,使用管理系统作为毕业设计是上手最快,并且最容易通过的计算机专业的毕业设计。该项目是本人动手实操的一个毕业设计,从理解到具体实现简单易操作,并成功通过学校严格的毕业设计考核。该项目用到的主要技术框架为SpringBoot,不想以java为主要编程语言的同学可以跳过啦。在数据库上主要使用MySQL数据库与Mybatis进行数据管理,用户登录管理方面使用的shiro安全框架。_物业管理系统java

886 微型计算机原理,华中科技大学2018年计算机考研886 微型计算机原理及应用考试大纲...-程序员宅基地

文章浏览阅读169次。华中科技大学硕士研究生入学考试《微型计算机原理及应用》考试大纲科目代码(886)第一部分 考 试 说 明一、考试性质《微型计算机原理及应用》是报考我校软件学院硕士生选考的专业基础课之一。考试的评价标准为高等学校的优秀本科毕业生能达到的水平,以保证被录取的考生具有较好的微型计算机理论基础和应用能力。考试对象为报考我校硕士研究生入学考试的准考考生。二、考试形式与试卷结构(一) 答卷方式:闭卷,笔试(二..._test al,81h

Linux学习笔记(atime、mtime、ctime)_linux mtime-程序员宅基地

文章浏览阅读207次。ls -l命令查看的时间是文件最后的修改时间。改变时间:ctime:文件属性,比如权限。删除时间:dtime:文件被删除的时间。访问时间:atime:查看内容。修改时间:mtime:修改内容。_linux mtime

【贪心】【Uva11292】 勇者斗恶龙_勇者斗恶龙csdn-程序员宅基地

文章浏览阅读2.3k次。直接用白书上的翻译吧例题1 勇者斗恶龙(The Dragon of Loowater, UVa 11292)你的王国里有一条n个头的恶龙,你希望雇一些骑士把它杀死(即砍掉所有头)。村里有m个骑士可以雇佣,一个能力值为x的骑士可以砍掉恶龙一个直径不超过x的头,且需要支付x个金币。如何雇佣骑士才能砍掉恶龙的所有头,且需要支付的金币最少?注意,一个骑士只能砍一个头(且不能被雇佣两次)。_勇者斗恶龙csdn

随便推点

安卓手机里能否安装钢琴键盘模拟器APP呢?_手机怎么安装键盘钢琴软件-程序员宅基地

文章浏览阅读1.2k次。可以在手机里直接安装使用。对于我们模拟练习钢琴非常有用。首先我们先启动手机,然后进入手机里的应用市场,搜索【钢琴键盘模拟器】安装到手机桌面上。  然后我们点 击【钢琴键盘模拟器】的图标,进入可操作界面。这时候会制动跳转到手机横屏界面。我们可以看到在操作界面里有模拟钢琴的黑白键盘。  同时在钢琴键盘模拟器的操作界面里,我们点击“加号”“减号”按钮可以调节黑白键盘的大小比例。  我们可以在钢琴键盘..._手机怎么安装键盘钢琴软件

Windows安装Git图文教程_git安装教程 windows-程序员宅基地

文章浏览阅读4.4w次,点赞32次,收藏127次。Windows下安装git超详细图文教程_git安装教程 windows

【Verilog】马里奥小游戏的FPGA实现_verilog 小游戏-程序员宅基地

文章浏览阅读6k次,点赞18次,收藏89次。经典马里奥小游戏新年好!祝各位朋友新年快乐!!健康平安!!!代码有部分删减,不影响理解。演示视频.具体过程:按下十字按键的中央按键开始游戏。碰到柱子边界游戏结束。累计平安通过一定数量的柱子障碍,获得积分奖励,可选择继续游戏,失败则成绩全部清零;或直接结束游戏,并存档游戏进度。具体代码片段:`timescale 1ns / 1psmodule project_..._verilog 小游戏

软件设计模式初了解_对软件设计模式的认识-程序员宅基地

文章浏览阅读173次。软件设计模式一、软件设计模式的产生背景1、设计模式出处设计模式”这个术语最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977 年,美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造》(A Pattern Language: Towns Building Construction)中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行_对软件设计模式的认识

无问西东_粗布衣茅草房 铁骨铮铮-程序员宅基地

文章浏览阅读176次。梅贻琦对吴岭澜说:“人把自己置身于忙碌当中,有一种麻木的踏实,但丧失了真实,你的青春也不过只有这些日子。  什么是真实?  你看到什么,听到什么,做什么,和谁在一起  有一种,从心灵深处,满溢出来的不懊悔,也不羞耻的平和与喜悦。”1分24秒旋律的突变,配合电影中一群来路不明战机的出现,看的时候心立即就揪起来了,以为光耀遇到了敌机埋伏,旋律再次回归正常,看到了光耀队友们战机向贫民窟的孩子们投..._粗布衣茅草房 铁骨铮铮

云计算(五)——Mapreduce 的使用_mapreduce使用-程序员宅基地

文章浏览阅读1.5k次,点赞2次,收藏10次。一、Mapreduce 计算整数的最大值和最小值【实验目的】1)理解mapreduce执行原理2)理解map,reduce阶段3)函数的使用【实验原理】需求描述:对输入文件中数据进行计算找出这一组数据中的最大值和最小值。原始数据:1021039109200..._mapreduce使用

推荐文章

热门文章

相关标签