2017谷歌C++编程规范详解:88页精华解读
需积分: 10 87 浏览量
更新于2024-07-19
收藏 479KB PDF 举报
谷歌C++编程规范英文版是一份由Google于2017年8月发布的详细指南,旨在提供高质量的编码标准和最佳实践,以确保代码的一致性、可读性和性能优化。这份88页的PDF文档涵盖了C++语言的各个方面,从基础结构到高级特性,包括:
1. **Header**:强调了头文件的管理,提倡使用自包含的头文件(self-contained headers),避免循环依赖,以及`#define Guard`的使用,确保预处理器宏定义的安全。
2. **Forward Declarations**:鼓励在不需要完整类型信息时进行函数或类的声明,以减少编译时间。
3. **Inline Functions**:推荐适当使用内联函数,以提高函数调用的效率,但要谨慎考虑过度内联可能带来的代码膨胀问题。
4. **Names and Order of Includes**:指导开发者按照某种顺序(如依赖关系)来组织和包含文件,以提高构建速度和减少编译错误。
5. **Scoping**:深入讨论了命名空间(Namespaces)的作用,如何避免命名冲突,并提到了匿名命名空间和静态变量的使用。
6. **Nonmember, Static Member, and Global Functions**:区分了这些不同类型的函数,强调全局和静态成员函数的限制,以及如何控制其可见性和生命周期。
7. **Local Variables**:提倡尽早声明并初始化局部变量,以提高代码清晰度。
8. **Static and Global Variables**:讲解了静态和全局变量的使用,以及如何管理和控制内存泄漏。
9. **Classes**:详细讨论了类的设计原则,包括构造函数中的工作分配,以及结构体与类的选择。
10. **Inheritance**:阐述了单一继承和多重继承的特点,以及接口设计(Interfaces)的重要性。
11. **Operator Overloading**:指出了合理地重载操作符的要求,以保持代码的易读性。
12. **Access Control**:介绍了访问修饰符(public, private, protected)的应用,强调了封装和信息隐藏的原则。
13. **Declaration Order**:推荐按照一定的顺序声明和定义变量和函数,以提高代码的可读性。
14. **Functions**:强调编写短小、功能明确的函数,避免过长函数,支持引用参数和默认参数的使用。
15. **C++ Specific**:涵盖了一些C++特有的技术,如Rvalue References(移动语义)、Friends、异常处理(Exception Handling)、运行时类型信息(RTTI)、类型转换(Casting)等。
16. **C++ Features**:介绍了C++11及后续版本的新特性,如auto关键字、brace-enclosed initializer lists、lambda expressions、模板元编程等。
17. **Boost**:提到了Boost库的一些最佳实践,特别是std::hash的使用。
18. **std::**:强调了标准库的使用,如std::hash的使用以及非标准扩展的处理。
19. **Preprocessor Macros**:对预处理器宏的使用给出了指导,尤其是0和nullptr/NULL的区别以及sizeof运算符的正确应用。
20. **Nonstandard Extensions**:尽管关注标准,但也讨论了在某些情况下可能需要使用非标准扩展的情况。
通过遵循这份谷歌C++编程规范,开发人员可以确保他们的代码不仅符合Google的标准,而且具有高性能、可维护性和良好的扩展性。此外,文档还推荐了Google的代码检查工具`cpplint`,用于自动检查代码风格和潜在问题。这是一份值得深入学习和参考的指南,对于任何C++开发者来说都是一个宝贵的资源。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2014-01-24 上传
2011-03-12 上传
点击了解资源详情
2024-05-29 上传
2023-02-13 上传
CS_DX
- 粉丝: 0
- 资源: 2
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析