Google 开源项目风格指南(中文版)
本指南由国内程序员翻译维护,涵盖 Google 开源项目在 C++、Objective-C、Python、Shell 和 JavaScript 等语言的编程风格约定。指南通过详细的规则和理由帮助开发者编写一致、可读、可维护的代码,同时解释为何采用某些约定以及在何种情况下可以例外。
主要内容
- 头文件:自包含、#define 保护、前置声明、内联函数、include 路径顺序。
- 作用域:命名空间(具名、匿名、静态)、非成员函数、局部变量初始化、静态和全局变量限制。
- 类:构造函数职责(避免虚函数调用、错误报告)、隐式类型转换(explicit 关键字)、拷贝控制、操作符重载、访问控制、继承与组合。
- 函数:参数传递、重载、默认参数、变长参数、返回值、异常处理(指南中异常被禁用)。
- 数组和对象初始化:列表初始化、结构化绑定、禁用易错写法。
- 注释:使用 JSDoc/JavaDoc 风格, block tags、内联 tags、HTML 内容、文件概览、类、方法、属性注释。
- 可见性:@private、@protected、@public 等标签的含义与 C++/Java 的不同之处。
- 类型系统:基本类型、联合类型、枚举、记录类型、函数类型、可空/非空、类型别名 (@typedef)、模板类型。
- 其他技巧:布尔表达式简写、短路求值、遍历节点列表的推荐写法、空行使用、括号、字符串引号选择。
关键理念
- 一致性胜于个人偏好:统一风格使大型代码库更易读懂。
- 规则伴随理由:每条规则都说明为什么这样做,何时可以例外。
- 可读性与效率平衡:如内联函数仅限于小函数、推荐使用匿名命名空间限制作用域。
- 工具辅助:使用 cpplint、google-c-style.el、JSDoc 等工具自动检查风格。
与其他指南的关系
- 本指南是 Google 实际使用的风格指南的中文翻译版本,适用于其主导的开源项目。
- 其他团队可参照或从中汲取灵感,结合自身实际情况制定规范。
- 指南不强制其他项目必须完全遵照,但提供了可参考的权威经验。
注:本笔记仅为指南核心内容的摘要,完整细节请参照原始 PDF。