Google C++ Style Guide 笔记1

程序开发基础学习二(C++ Google Style 命名规则) 无规矩不成方圆,新的岗位就需要服从团队的编码规则。很开心团队用的是Google的C++编码规则,大概看了下Google 的编码规则,正如九天翔雁说的:“Google的 C++ Style Guide远不仅是一个传统意义上的代码书写风格指导,对于C++的方方面面做出了Google的 阅读详情

无意中看到了 Google C++ Style Guide ,开始简简单单的的看了一下,发现很有意思,很久都没看英文文档了,这次碰到了,我就简单的翻译了一下,途中才知道英文没学好就罢了,中文也是一塌糊涂,真是“少壮不努力,老大徒伤悲”呀!

Google C++ Style Guide,姑且我翻译为Google C++ 编程规范。每个单位,每个团队,每个人都有自己的编码习惯,也不能说谁的一定好,谁的一定差,总之,我认为有很好的可读性,和有很好的维护性的代码风格为好。

看别人的东西是很有快感的,英文也是那样,但是从英文翻译成中文就很纠结了,恰好最近项目不是很紧张,抽了点空翻译了一下。废话不多,下面开始。首先是各个章节,包含:

1.Header Files

2.Scopinig

3.Classes

4.Google Specific Magic

5.Other C++ Features

6.Naming

7.Comments

8.Formatting

9.Exceptions to the Rules

 

在这篇里面,首先写下前面2章的笔记。

 

 

 

1.Header Files,头文件

每一个cpp文件有应该含有一个.h的头文件,一般规定main()在cpp文件里面。

(1) The #define Guard: #define的保护文件的唯一性

许多头文件用#define来防止被多重包含,使用格式为“<PROJECT>_<PATH>_<FILE>_H_”。

 

(2) Header File Dependencies ,头文件的附属作用

    能使用前置声明的情况下就不要使用#include。大量在.h文件里面使用#inlcude,如果被包含的文件修改,包含的文件就会从新编译。

 

(3) Inline Functions,内联函数

    只有不足10行的代码才建议使用内联函数,合理的使用能很大程度增加程序运行的效率,反之,能减慢程序的速度。

    析构函数最好不要使用内联,因为析构函数实现的代码比你写的要长很多。

    有循环和switch的不要使用内联,除非循环和switch永远没有执行。

    小心虚函数和递归函数,即使你定义为内联函数,编译器也不会按照内联函数来处理。


(4) The -inl.h Files,内联函数的头文件

    在需要的时候你应该定义一个 -inl.h 文件来管理你的内联函数。

    简单的函数在.h里面实现就可以,但是如果稍微复杂一点的,就放在-inl.h文件,来减少.h的大小。

    千万不要忘记用#define来防止多重包含呀!


(5) Function Parameter Ordering 函数参数的排序

    先输入后输出。

    输入的参数总是const&,而输出的参数为non-const。

    不要轻易的再函数后面增加参数,先搞清楚这个函数是输入还是输出!


(6) Names and Order of Includes,头文件的包含顺序

 

   A. dir2/foo2.h (preferred location — see details below).

   B. C system files.

   C. C++ system files.

   D. Other libraries' .h files.

   E. Your project's .h files.

 

 

 

 

2.Scoping 范围

(1)Namespace命名空间

    Namespace 全局划分不同的区域, 在全局上非常有用的阻止名字的冲突。

    分为 Unnamed Namespaces和 Named Namespaces。

    Unnamed Namespaces:

    在cpp文件里面鼓励使用没有名字的命名空间( Unnamed namespaces ),但是在.h文件里面不要使用。

    文件范围内的静态成员变量或者静态成员函数相当于一个unnamed namespace.的成员。

    Unnamed Namespaces的最后一行记得加上注释。

    Named Namespaces:

     Namespaces应该在include 后面使用。

    不要在namespaces std中声明任何东西。

    你不要使用 using namespace来直接引用定义的对象。

        // Forbidden -- This pollutes the namespace.

        using namespace foo;

 

(2)Nested_Classes 嵌套类

    使用公共嵌套类当是接口的时候。

 

(3) Nonmember, Static Member, and Global Functions,

    在一个 namespace 中的非成员函数或者一个全局的静态函数,一般很少使用全局函数。  

 

(4)Local_Variables   局部变量

    在声明的时候记得初始化哦!

    在最近使用到的地方定义。(好像是神马就近原则)

int i;

i = f();      // Bad -- initialization separate from declaration.

       int j = g();  // Good -- declaration has initialization.

 

 

 

    在循环条件中定义的是一个局部变量。

    如果在循环中定义的对象是一个类对象的,放到类外面定义,因为每次循环都要调用类的构造函数和析构函数。

 

(5)Static and Global Variables 静态变量和全局变量

    禁止把类的对象定义为静态变量或者全局变量,由于顺序不明确的构造函数和析构函数,导致很难找到bugs。

    POD类型(int ,char, float......)适合成为静态或者全局变量。

 

    如果确实需要一个类对象是一个全局的或者静态的,考虑一下指针对象。

 

 

(待续)

因我经验不多,英文也差,语文也差,所以有什么不足之处,请各位看官不吝赐教。谢谢!

MISRA C++ 、Google C++ 、AUTOSAR Adaptive Platform编码 C++ 规范总结 在深入探讨具体的C++编程规范之前,了解它们在现代软件开发中的重要性是至关重要的。这不仅是一种技术需求,更体现了程序员在解决问题时的思维方式和行为模式。 阅读详情

相关推荐

从“Hello World”到区域赛银牌:我的ACM算法打怪升级全记录(附各阶段工具包)

本文记录了作者从编程新手到ACM区域赛银牌获得者的完整学习历程,详细分享了各阶段的算法学习路线、刷题策略和实战经验。涵盖从基础算法到动态规划的系统训练方法,并附赠经过竞赛检验的工具包和资源清单,为算法竞赛爱好者提供实用参考。

weixin_29201859的博客 123

一个跨平台的c++日志模块实现

文件log.h#ifndef __GUARD_LOG_H #define __GUARD_LOG_H #include #include #include #ifdef WIN32 #include #else #include #include #include #include #define CRITICAL_SECTION

成都未眠的博客 3963

3D视觉-激光三角测量法的概述和原理

激光三角法位移测量的原理是,用一束激光以某一角度聚焦在被测物体表面,然后从另一角度对物体表面上的激光光斑进行成像,物体表面激光照射点的位置高度不同,所接受散射或反射光线的角度也不同,用。激光三角测量法是一种通过图像采集系统采集被测物表面漫反射的激光轮廓,进而基于设备已知的相对位置通过算法处理,获得被测物表面的三维轮廓数据,进而还原目标物体三维空间信息的方法。采用激光三角原理和回波分析原理进行非接触位置、位移测量的精密传感器, 广泛应用于位置、位移 、厚度、半径、形状、振动、距离等几何量的工业测量。

qq_20660115的博客 3921

C++代码风格规范

Introduction 介绍 以下是此代码惯例的重点:C++ Coding Style Guide Highlights 但我们强烈建议大家阅读完整文档因为包含了很多有用的信息和例子。 头文件 通常,每个.c / .cpp文件都应该有一个关联的 .h文件。 有一些常见的例外,例如单元测试(unit tests)和只包含main()函数的小型 .c / .cpp文件。 正确使用 header files 会对代码的可读性,大小和性能有所提升。 以下规则将会指示使用 header files 的

不忘初心 922

形位公差标注的常见误区与优化策略

本文深入解析机械设计中形位公差标注的常见误区与优化策略,特别针对NX2406用户提供实用技巧。从标注冗余、基准选择到公差值设定等五大误区入手,结合工程图实例展示如何提升标注精度与效率,帮助工程师避免常见错误,优化设计流程,确保零件功能实现与制造可行性。

info6的博客 245

【自动驾驶】汽车智能驾驶计算芯片

本文介绍汽车智能驾驶计算芯片的软硬件要求、 可靠性和安全性要求、 性能要求,和相应的试验方法。除了用于汽车智能驾驶, 其他领域的计算芯片可参照执行。

Mr.Cssust的博客 2631

google-c++代码规范-头文件

google代码规范中一些需要注意的点头文件新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 头文件 严格来说,每一个代码文件都应该包含对应的头文件,除了一些 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支

cfm908826的博客 601

浙政钉(专有钉钉)门户免登(超详细)

钉钉家族 介绍浙政钉门户免登之前,首先搞清楚几个软件的关系,软件分别是:钉钉,专有钉钉,浙政钉 钉钉 是阿里巴巴集团专为中小企业打造的沟通和协同的多端平台。 专有钉钉 原名 政务钉钉,有更开放的设计能力、集成能力、更结构化协同产品、更定制化开发平台。支持专有化部署,数据落本地,更安全、客户可对该产品持牌运营、结构化编排,协助构建本地应用中心、提供移动应用全面安全保障体系。 浙政钉 为规范浙政钉整体架构体系,按照统分结合原则,由省政府办公厅统一设计整体工作界面和系统框架,统筹指导全省统建应用建设,各单

一缕南风的博客 2万+

谷歌C++代码规范--翻译学习1

谷歌CPP 编程规范-- 每天看点,多了也记不住,在实践中改变自己的代码风格吧! Cpp文件的命名是.cc而不是.cpp,这点不是很明白,为什么不用cpp,而是用cc http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Scoping 1.   头文件 #define 保护 每个头文件都应该有#defi

文西 1415

进芯AVP28335烧录避坑全记录:CCS、Uniflash、C2Prog、SDFlash四大工具配置详解

本文详细解析了进芯AVP28335芯片在烧录过程中遇到的常见问题及解决方案,涵盖CCS、Uniflash、C2Prog和SDFlash四大工具的配置要点。针对国产器件AVP28335的特殊需求,提供了从开发环境准备到烧录验证的全流程指南,帮助开发者高效完成程序烧录,避免常见陷阱。

weixin_30836759的博客 590

【占用网络】OccNet: Scene as Occupancy 适用于检测、分割和规划任务 ICCV2023

本文分享“占用网络”方案中,具有代表性的方法:OccNet。它以多视角视觉为核心,首先生成BEV特征,然后通过级联结构和时间体素解码器重建生成3D占用特征。构建一个通用的“3D占用编码特征”,用以表示3D物理世界。这样的特征描述可以应用于广泛的自动驾驶任务,包括检测、分割和规划。

黎国溥 3361

文件保护符(header guard)

W

mtAsnow 2588

Python爬虫教程:抓取地方政府网站的公开文件与政策信息

Web爬虫是指一种自动化脚本,用于模拟人类浏览器访问网页、提取网页内容的数据抓取工具。发送请求到目标网页;获取网页内容;解析网页内容,提取所需数据;将数据保存或进一步处理。爬虫可以抓取各种形式的数据,如文本、图片、文件等。本教程将重点展示如何抓取地方政府网站上公开的政策文件、公告等信息。许多政府网站都会采取一定的反爬虫措施,防止大量数据被爬取。IP封锁:如果短时间内大量请求来自同一IP,可能会被封锁。验证码:一些网站会使用验证码来验证访问者是否为机器人。动态加载。

2201_76125261的博客 1981

Google C++ Style Guide 阅读笔记 1

BackgroundC++是谷歌开源项目的主要使用语言,虽然Google Code 黄了。C++是很强大的语言,以致于增加了其复杂性。为了让代码被其他程序员看懂,减少出bug的可能,所以有了这个谷歌C++风格指导。Header Files 每个.cc文件都应该与一个.h文件关联,除非是单元测试或者只包含一个main(); The #define Guard 每个头文件都应该避免被重复包含。

MaybePossible 1048

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Google C++ Style Guide - Google C++ 风格指南

Google C++ Style Guide - Google C++ 风格指南

程永强 2314

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Google C++ Style Guide的哲学

Google C++ Style Guide并不是一个百科全书,也不是一个C++使用指南,但它描述适用于Google及其开源项目的编码指南,并不追求全面和绝对正确,也有许多人置疑它的一些规则。但作为一个最具影响力的编码规范,它里面有许多内容值得我们研究学习。

yhl_leo 6万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

C++代码格式化:Google Style Guide的clang-format配置

你是否还在为团队中混乱的C++代码格式争论不休?是否每次提交代码都要花费大量时间手动调整缩进和括号位置?本文将带你一文掌握如何使用clang-format工具实现Google C++ Style Guide的自动格式化,让代码风格统一不再是团队协作的障碍。读完本文后,你将能够:配置符合Google规范的clang-format文件、集成格式化工具到开发流程、解决常见的格式化冲突问题。 ## Go...

gitblog_00668的博客 816

一张图总结Google C++编程规范(Google C++ Style Guide)

Google C++ Style Guide是一份不错的C++编码指南,我制作了一张比较全面的说明图,可以在短时间内快速掌握规范的重点内容。不过规范毕竟是人定的,记得活学活用。看图前别忘了阅读下面两条重要建议: 1 保持一致也非常重要,如果你在一个文件中新加的代码和原有代码风格相去甚远的话,这就破坏了文件本身的整体美观也影响阅读,所以要尽量避免。 2 一些条目往往有例外,比如下面这些,所以本图不能代替文档,有时间还是把PDF认真阅读一遍吧。

voidccc的专栏 5万+

整理一下 Google C++ Style Guide

“ 能始终做自己的人, 是因为得到了太多的温柔善意。”   2019. 整理一篇Google的C++ 编程规范~   中文版:https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/contents/#c Google 的C++ 编码规范很早就已经公开了,李开复也在其微博上公开分享:”我认为这...

I-am-Unique 1085

C++命名规范终极指南:掌握Google C++ Style Guide的10个核心规则

想要写出专业、易读、易维护的C++代码吗?Google C++ Style Guide是业界最权威的C++编码规范之一,被全球数百万开发者采用。本文将为你揭秘Google C++命名规范的10个核心规则,帮助你快速掌握编写高质量C++代码的秘诀!🚀 ## 为什么C++命名规范如此重要? 在大型C++项目中,**命名规范**不仅仅是代码风格的问题,更是团队协作、代码可维护性和可读性的关键。Go

gitblog_00458的博客 505

Google C++ Style Guide 谷歌 C++编码风格指南

代码规范

weixin_42944928的博客 2822

Google C++ style guide

由于是初学c++,在看这份指南时,很多地方的一些专业术语并不是很清楚,所以每一块的笔记最前面都会有一个概念梳理,方便阅读时自己遗忘了某一概念,能够第一时间找到对应的答案。 一、头文件 1.头文件中的概念梳理 ①.h是头文件,用于定义函数等 ② .inc用于插入文本的文件 ③ 前置声明是类、函数和模板的纯粹声明,没伴随着其定义。 ④ 头文件的次序如下:...

Celinee__的博客 728

学习Google C++ style

学习Google C++ Style Guide

有志青年 747

Google C++ Style Guide : 变量与函数名

介绍Google C++ Style Guide中的命名规范

2402_86037826的博客 358

编码风格之(6)C++语言规范(Google风格)(1)

C++ 是 Google 许多开源项目使用的主要开发语言之一。每个 C++ 程序员都知道,该语言具有许多强大的功能,但这种功能也带来了复杂性,这反过来又会使代码更容易出现错误,并且更难以阅读和维护。本指南的目标是通过详细描述编写 C++ 代码的注意事项来管理这种复杂性。这些规则的存在是为了保持代码库的可管理性,同时仍然允许编码人员高效地使用 C++ 语言功能。风格,也称为可读性,是我们所说的管理 C++ 代码的约定。术语"样式”有点用词不当,因为这些约定涵盖的不仅仅是源文件格式。

梅花香自苦寒来,宝剑锋从磨砺出。 2372
上一篇: 用CreateFile打开COM10以上的串口
下一篇: VS2005编译DLL错误,error C2491: 'CMyClass::Function' : definition of dllimport function not allowed
ccing
博客等级 码龄20年 11粉丝 9原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值