google-命名约定

Posted o-v-o

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了google-命名约定相关的知识,希望对你有一定的参考价值。

通用命名规则

总述

函数名,变量名,文件名要有描述性;少用缩写.

1.文件命名

文件名要全部小写,可以包含下划线()或连字符(-),没有约定,""更好些.
my_useful_class.cc

2.类型命名

类型名称的每个单词首字母均大写,不包含下划线:MyExcitingClass, MyExcitingEnum.
所有类型命名--类,结构体,类型定义(typedef), 枚举,类型模板参数 -- 均使用相同约定

// 类和结构体
class UrlTable{}
class UrlTableTester{}
struct urlTableProperties{}

// 类型定义
typedef hash_map<UrlTableProperties *, string> PropertiesMap;

// using 别名
using PropertiesMap = hash_map<UrlTableProperties *, string>;

// 枚举
enum UrlTableErrors {}

3.变量命名

变量(包括函数参数)和数据成员名一律小写,单词之间用下划线链接.类的成员变量以下划线结尾,但结构体的就不用,如:
a_local_variable, a_struct_data_member, a_class_data_member_.

  • 普通变量:
string table_name;
string tablename;
  • 类数据成员:
class TableInfo{

private:
  string table_name_;
  string tablename_;
  static Pool<TableInfo>* pool_;
};
  • 结构体变量:
struct UrlTableProperties{
  string name;
  int num_entries;
  static Pool<UrlTableProperties>* pool;
};

函数命名

常规函数使用大小写混合,取值和设值函数则要求与变量名匹配:
MyExcitingFunction(), MyExcitingMethod(), my_exciting_member_variable(), set_my_exciting_variable().

  • 说明:
    一般来说,函数名的每个单词首字母大写,没有下划线.对于首字母缩写的单词,更倾向于将它们视为一个单词进行首字母大写(例如,写作StartRpc() 而非StartRPC())

    常量命名

    声明为const的变量,或在程序运行期间其值始终保持不变的,命名时以"k"开头,大小写混合,如:
const int kDaysInAWeek = 7;

命名空间命名

命名空间以小写字母命名,最高级命名空间的名字取决于项目名称.要注意避免嵌套命名空间的名字之间和常见的顶级命名空间的名字之间发生冲突.顶级命名空间的名称应当是项目名或是该命名空间中代码所属团队的名字.命名空间中的代码,应当存放于和命名空间的名字匹配的文件夹或其子文件夹中.

枚举命名

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

enum UrlTableError{
    kOK = 0;
    kErrorOutOfMemory, 
    kErrorMalformedInput,
};
enum AlternateUrlTableErrors{
    OK = 0;
    OUT_OF_MeMORY = 1;
    MALFORMED_INPUT = 2;
};

2009 年 1 月之前, 我们一直建议采用 宏 的方式命名枚举值. 由于枚举值和宏之间的命名冲突, 直接导致了很多问题. 由此, 这里改为优先选择常量风格的命名方式. 新代码应该尽可能优先使用常量风格. 但是老代码没必要切换到常量风格, 除非宏风格确实会产生编译期问题.

宏命名

通常不应该使用宏,如果不得不用,其命名像枚举命名一样全部大写,使用下划线.

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

参考文档:https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/naming/







以上是关于google-命名约定的主要内容,如果未能解决你的问题,请参考以下文章

Google C++项目命名约定

google-命名约定

protobuf-net 生成的 .proto 文件中的字段命名约定不正确?

命名规范

来自 Google 的 R 语言编码风格指南

Qt 小部件的命名约定