·

Google 开源项目风格指南 (中文版)
  • 在线文档托管在 ReadTheDocs : 在线阅读最新版本
  • 中文风格指南 GitHub 托管地址:zh-google-styleguide

Note

声明.

本项目并非 Google 官方项目, 而是由国内程序员凭热情创建和维护.

如果你关注的是 Google 官方英文版, 请移步 Google Style Guide

每个较大的开源项目都有自己的风格指南: 关于如何为该项目编写代码的一系列约定 (有时候会比较武断). 当所有代码均保持一致的风格, 在理解大型代码库时更为轻松.

“风格” 的含义涵盖范围广, 从 “变量使用驼峰格式 (camelCase)” 到 “决不使用全局变量” 再到 “决不使用异常”. 英文版项目维护的是在 Google 使用的编程风格指南. 如果你正在修改的项目源自 Google, 你可能会被引导至 英文版项目页面, 以了解项目所使用的风格.

我们已经发布了五份 中文版 的风格指南:

  1. Google C++ 风格指南
  2. Google Objective-C 风格指南
  3. Google Python 风格指南
  4. Google JSON 风格指南
  5. Google Shell 风格指南

中文版项目采用 reStructuredText 纯文本标记语法, 并使用 Sphinx 生成 HTML / CHM / PDF 等文档格式.

  • 英文版项目还包含 cpplint - 一个用来帮助适应风格准则的工具, 以及 google-c-style.el, Google 风格的 Emacs 配置文件.
  • 另外, 招募志愿者翻译 JavaScript Style Guide 以及 XML Document Format Style Guide, 有意者请联系 Yang.Y.
C++ 风格指南 - 内容目录

Contents

  • C++ 风格指南 - 内容目录
  • 0. 扉页
    • 0.1 译者前言
    • 0.2 背景
  • 1. 头文件
    • 1.1. Self-contained 头文件
    • 1.2. #define 保护
    • 1.3. 前置声明
    • 1.4. 内联函数
    • 1.5. #include 的路径及顺序
    • 译者 (YuleFox) 笔记
    • 译者(acgtyrant)笔记
  • 2. 作用域
    • 2.1. 命名空间
    • 2.2. 匿名命名空间和静态变量
    • 2.3. 非成员函数、静态成员函数和全局函数
    • 2.4. 局部变量
    • 2.5. 静态和全局变量
    • 译者 (YuleFox) 笔记
    • 译者(acgtyrant)笔记
  • 3. 类
    • 3.1. 构造函数的职责
    • 3.2. 隐式类型转换
    • 3.3. 可拷贝类型和可移动类型
    • 3.4. 结构体 VS. 类
    • 3.5. 继承
    • 3.6. 多重继承
    • 3.7. 接口
    • 3.8. 运算符重载
    • 3.9. 存取控制
    • 3.10. 声明顺序
    • 译者 (YuleFox) 笔记
  • 4. 函数
    • 4.1. 参数顺序
    • 4.2. 编写简短函数
    • 4.3. 引用参数
    • 4.4. 函数重载
    • 4.5. 缺省参数
    • 4.6. 函数返回类型后置语法
  • 5. 来自 Google 的奇技
    • 5.1. 所有权与智能指针
    • 5.2. Cpplint
    • 译者(acgtyrant)笔记
  • 6. 其他 C++ 特性
    • 6.1. 引用参数
    • 6.2. 右值引用
    • 6.3. 函数重载
    • 6.4. 缺省参数
    • 6.5. 变长数组和 alloca()
    • 6.6. 友元
    • 6.7. 异常
    • 6.8. 运行时类型识别
    • 6.9. 类型转换
    • 6.10. 流
    • 6.11. 前置自增和自减
    • 6.12. const 用法
    • 6.13. constexpr 用法
    • 6.14. 整型
    • 6.15. 64 位下的可移植性
    • 6.16. 预处理宏
    • 6.17. 0, nullptr 和 NULL
    • 6.18. sizeof
    • 6.19. auto
    • 6.20. 列表初始化
    • 6.21. Lambda 表达式
    • 6.22. 模板编程
    • 6.23. Boost 库
    • 6.24. C++11
    • 译者(acgtyrant)笔记
  • 7. 命名约定
    • 7.1. 通用命名规则
    • 7.2. 文件命名
    • 7.3. 类型命名
    • 7.4. 变量命名
      • 普通变量命名
      • 类数据成员
      • 结构体变量
    • 7.5. 常量命名
    • 7.6. 函数命名
    • 7.7. 命名空间命名
    • 7.8. 枚举命名
    • 7.9. 宏命名
    • 7.10. 命名规则的特例
    • 译者(acgtyrant)笔记
  • 8. 注释
    • 8.1. 注释风格
    • 8.2. 文件注释
      • 法律公告和作者信息
      • 文件内容
    • 8.3. 类注释
    • 8.4. 函数注释
      • 函数声明
      • 函数定义
    • 8.5. 变量注释
      • 类数据成员
      • 全局变量
    • 8.6. 实现注释
      • 代码前注释
      • 行注释
      • 函数参数注释
      • 不允许的行为
    • 8.7. 标点, 拼写和语法
    • 8.8. TODO 注释
    • 8.9. 弃用注释
    • 译者 (YuleFox) 笔记
  • 9. 格式
    • 9.1. 行长度
    • 9.2. 非 ASCII 字符
    • 9.3. 空格还是制表位
    • 9.4. 函数声明与定义
    • 9.5. Lambda 表达式
    • 9.6. 函数调用
    • 9.7. 列表初始化格式
    • 9.8. 条件语句
    • 9.9. 循环和开关选择语句
    • 9.10. 指针和引用表达式
    • 9.11. 布尔表达式
    • 9.12. 函数返回值
    • 9.13. 变量及数组初始化
    • 9.14. 预处理指令
    • 9.15. 类格式
    • 9.16. 构造函数初始值列表
    • 9.17. 命名空间格式化
    • 9.19. 水平留白
      • 通用
      • 循环和条件语句
      • 操作符
      • 模板和转换
    • 9.19. 垂直留白
    • 译者 (YuleFox) 笔记
    • 译者(acgtyrant)笔记
  • 10. 规则特例
    • 10.1. 现有不合规范的代码
    • 10.2. Windows 代码
  • 11. 结束语
Next  Previous