谷歌风格C++命名规则

简介: 谷歌风格C++命名规则

1. 文件命名

规则

文件名要全部小写, 可以包含下划线 () 或连字符 (-), 依照项目的约定. 如果没有约定, 那么 “” 更好.

举例

my_useful_class.cc
    my-useful-class.cc

注意

1> C++ 文件要以 .cc 结尾, 头文件以 .h 结尾. 专门插入文本的文件则以 .inc 结尾

2> 内联函数直接放在.h文件中

2. 类型命名

规则

【类, 结构体, 类型定义 (typedef), 枚举, 类型模板参数 均为类型】,以大写字母开始, 每个单词首字母均大写, 不包含下划线。

举例

// 类和结构体
class UrlTable { ...
class UrlTableTester { ...
struct UrlTableProperties { ...
// 类型定义
typedef hash_map<UrlTableProperties *, string> PropertiesMap;
// using 别名
using PropertiesMap = hash_map<UrlTableProperties *, string>;
// 枚举
enum UrlTableErrors { ...

3. 变量命名

规则

变量 (包括函数参数) 和数据成员名一律小写, 单词之间用下划线连接. 类的成员变量以下划线结尾, 但结构体内部的变量的就不用。

举例

1> 普通变量命名

string table_name;  // 好 - 用下划线.
string tablename;   // 好 - 全小写.
string tableName;  // 差 - 混合大小写

2> 类数据成员变量

class TableInfo {
  ...
 private:
  string table_name_;  // 好 - 后加下划线.
  string tablename_;   // 好.
  static Pool<TableInfo>* pool_;  // 好.
};

3> 结构体成员变量

struct UrlTableProperties {
  string name;
  int num_entries;
  static Pool<UrlTableProperties>* pool;
};

4> 全局变量

对全局变量没有特别要求, 少用就好, 但如果你要用, 可以用 g_ 或其它标志作为前缀, 以便更好的区分局部变量.

5> 常量命名

声明为 constexpr 或 const 的变量, 或在程序运行期间其值始终保持不变的, 命名时以 “k” 开头, 大小写混合

const int kDaysInAWeek = 7;

4. 函数命名

规则

函数名的每个单词首字母大写 (即 “驼峰变量名” 或 “帕斯卡变量名”),没有下划线

举例

AddTableEntry()
DeleteUrl()
OpenFileOrDie()

5. 枚举命名

规则

枚举的命名应当和 常量 或 宏 一致: kEnumName 或是 ENUM_NAME.

举例

enum UrlTableErrors {
    kOK = 0,
    kErrorOutOfMemory,
    kErrorMalformedInput,
};
enum AlternateUrlTableErrors {
    OK = 0,
    OUT_OF_MEMORY = 1,
    MALFORMED_INPUT = 2,
};

6. 宏命名

规则

命名像枚举命名一样全部大写, 单词间使用下划线

举例

#define ROUND(x) ...
#define PI_ROUNDED 3.0


相关文章
|
6月前
|
存储 安全 数据安全/隐私保护
穿越编程之海:探索谷歌Protocol Buffers库在C++中的应用
穿越编程之海:探索谷歌Protocol Buffers库在C++中的应用
374 0
|
编译器 Go Android开发
中国上榜开发者薪酬最低国家;Go 语言产品负责人离职;谷歌 Carbon 旨在代替 C++ | 思否周刊
中国上榜开发者薪酬最低国家;Go 语言产品负责人离职;谷歌 Carbon 旨在代替 C++ | 思否周刊
241 0
|
Web App开发 Rust 安全
谷歌改善 Chrome 内存安全:通过 heap scanning 算法减少 C++ 代码库安全漏洞
谷歌改善 Chrome 内存安全:通过 heap scanning 算法减少 C++ 代码库安全漏洞
191 0
谷歌改善 Chrome 内存安全:通过 heap scanning 算法减少 C++ 代码库安全漏洞
|
API C++ Windows
C++命名规则&书写规范
C++命名规则&书写规范
1049 0
|
算法 Java Linux
谷歌语言标准中,C++成绝对的佼佼者
谷歌发布了一份调查报告[pdf](首页如下图),指出C++是市场上最高效的编程语言。该互联网巨头将一个紧凑的算法实现在四大预言——C++,Java,Scala以及它自己的编程语言Go之上——然后评估运行结果以找出‘差异因素’。
751 0
|
C++ Windows 分布式数据库
|
算法 C++ 程序员
Visual C++编程命名规则
一、程序风格:      1、严格采用阶梯层次组织程序代码:      各层次缩进的分格采用VC的缺省风格,即每层次缩进为4格,括号位于下一行。要求相匹配的大括号在同一列,对继行则要求再缩进4格。例如:      2、提示信息字符串的位置      在程序中需要给出的提示字符串,为了支持多种语言的开发,除了一些给调试用的临时信息外,其他所有的提示信息必须定义在资源中。
1113 0
|
8天前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
34 4
|
9天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
32 4
|
1月前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
27 4