Google 开源项目风格指南(中文版)

本指南由国内程序员翻译维护,涵盖 Google 开源项目在 C++、Objective-C、Python、Shell 和 JavaScript 等语言的编程风格约定。指南通过详细的规则和理由帮助开发者编写一致、可读、可维护的代码,同时解释为何采用某些约定以及在何种情况下可以例外。

主要内容

  • 头文件:自包含、#define 保护、前置声明、内联函数、include 路径顺序。
  • 作用域:命名空间(具名、匿名、静态)、非成员函数、局部变量初始化、静态和全局变量限制。
  • 类:构造函数职责(避免虚函数调用、错误报告)、隐式类型转换(explicit 关键字)、拷贝控制、操作符重载、访问控制、继承与组合。
  • 函数:参数传递、重载、默认参数、变长参数、返回值、异常处理(指南中异常被禁用)。
  • 数组和对象初始化:列表初始化、结构化绑定、禁用易错写法。
  • 注释:使用 JSDoc/JavaDoc 风格, block tags、内联 tags、HTML 内容、文件概览、类、方法、属性注释。
  • 可见性:@private、@protected、@public 等标签的含义与 C++/Java 的不同之处。
  • 类型系统:基本类型、联合类型、枚举、记录类型、函数类型、可空/非空、类型别名 (@typedef)、模板类型。
  • 其他技巧:布尔表达式简写、短路求值、遍历节点列表的推荐写法、空行使用、括号、字符串引号选择。

关键理念

  1. 一致性胜于个人偏好:统一风格使大型代码库更易读懂。
  2. 规则伴随理由:每条规则都说明为什么这样做,何时可以例外。
  3. 可读性与效率平衡:如内联函数仅限于小函数、推荐使用匿名命名空间限制作用域。
  4. 工具辅助:使用 cpplint、google-c-style.el、JSDoc 等工具自动检查风格。

与其他指南的关系

  • 本指南是 Google 实际使用的风格指南的中文翻译版本,适用于其主导的开源项目。
  • 其他团队可参照或从中汲取灵感,结合自身实际情况制定规范。
  • 指南不强制其他项目必须完全遵照,但提供了可参考的权威经验。

注:本笔记仅为指南核心内容的摘要,完整细节请参照原始 PDF。