欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Google C++编程规范讲解

程序员文章站 2022-04-08 10:15:51
个人认为google的C++编码规范实用性强,相交于微软的编码规范更加简单明了,我个人也是按照google的C++编码规范进行编码的。 一、文件命名 文件名要全部小写,可以包含...

个人认为google的C++编码规范实用性强,相交于微软的编码规范更加简单明了,我个人也是按照google的C++编码规范进行编码的。

一、文件命名

文件名要全部小写,可以包含下划线(_)或短线(-)。

my_useful_class.cc
my-useful-class.cc
myusefulclass.cc

二、类型命令

类型命名每个单词以大写字母开头,不包含下划线:MyExcitingClass、 MyExcitingEnum。

所有类型命名——类、结构体、类型定义(typedef)、枚举——使用相同约定,例如:

// classes and structs
class UrlTable { ...
class UrlTableTester { ...
struct UrlTableProperties { ...
// typedefs
typedef hash_map PropertiesMap;
// enums
enum UrlTableErrors { ...

三、变量命名

变量名一律小写,单词间以下划线相连。

3.1. 普通变量命名

string table_name;

3.2. 类数据成员命名,以下划线结尾

string name_;

3.3. 结构体数据成员命名,可以和普通成员一样,不用像类那样接下划线结尾:

struct UrlTableProperties {
   string name;
   int num_entries;
}

3.4. 全局变量命名,以g_为前缀

string g_name;

3.5. 常量命名,k后接大写字母开头的单词

const int kDaysInAWeek = 7;

四、函数命名

4.1. 普通函数,函数名以大写字母开头,每个单词首字母大写,下划线分隔

int AddTableEntry()
bool DeleteUrl()

4.2. 存取函数,要与存取的变量名相匹配

class MyClass {
public:
...
   int num_entries() const { return num_entries_; }
   void set_num_entries(int num_entries) { num_entries_ = num_entries; }
private:
   int num_entries_;
};

五、命名空间

命名空间的名称是全小写的,其命名基于项目名称和目录结构:google_awesome_project

六、枚举命名

枚举值全部大写,单词间以下划线相连;枚举名称属于类型,因此大写混合:

enum UrlTableErrors {
   OK = 0,
   ERROR_OUT_OF_MEMORY,
   ERROR_MALFORMED_INPUT,
};