谷歌命名规则

谷歌命名规则

通用命名规则:

​ 函数命名,变量命名,文件命名要有描述性;尽可能不用缩写。

​ 变量采用下划线连接,全小写的命名:price_count_reader;

注意:一些特定的广为人知的缩写是被允许的,例如用i表示迭代变量,用T表示模板参数。

文件命名:

​ 文件名命名全小写,可以用下划线连接。

​ 尽量让文件名更加明确,http_serber_logs.h就比logs.h要好,定义类时文件名一般成对出现,如***foo_bar.h***对应于类***FooBar***.

类型命名:

​ 类型名称采用首字母大写的驼峰规则且不包含下划线。

​ 所有类型命名 —— 类, 结构体, 类型定义 (typedef), 枚举, 类型模板参数 —— 均使用相同约定, 即以大写字母开始, 每个单词首字母均大写, 不包含下划线. 例如:

class UrlTable { ...
class UrlTableTester { ...
struct UrlTableProperties { ...

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

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

// 枚举
enum UrlTableErrors { ...

变量命名:

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

a_struct_data_member, 结构体 _ 数据_变量

a_class_data_member_. 类 _ 数据 _成员 _下划线结尾

常量命名:

声明为const的变量,或在程序运行期间其值始终保持不变的,命名时以“K”开头接着驼峰命名,例如

const int kDaysInAWeek=7;

函数命名:

​ 常规函数使用首字母大写的驼峰规则,取值和设值函数要求与变量名匹配

Function(),

Method(),

member_variable(),全小写下划线连接声明成员变量

set_member_variable(),全小写声明设值

对于缩写的单词更倾向于把它们视作一个单词进行首字母大写DeleteUrl()

(同样的命名规则同时适用于类作用域与命名空间作用域的常量, 因为它们是作为 API 的一部分暴露对外的, 因此应当让它们看起来像是一个函数, 因为在这时, 它们实际上是一个对象而非函数的这一事实对外不过是一个无关紧要的实现细节.)

取值和设值函数的命名与变量一致. 一般来说它们的名称与实际的成员变量对应, 但并不强制要求. 例如 int count()void set_count(int count).

命名空间命名:

命名空间以小字母命名,最高级命名空间的名字取决于项目名称,

顶级命名空间的名称应当是项目名或者是该命名空间中的代码所属的团队的名字. 命名空间中的代码, 应当存放于和命名空间的名字匹配的文件夹或其子文件夹中.

枚举命名:

枚举命名应与常量和宏一致:kEnumName或者宏ENUM_NAME(下划线连接全大写)。

枚举名是类型所以要采用首字母大写的驼峰命名

更建议采用常量风格命名枚举值,

enum UrlTableErrors {
    kOK = 0,
    kErrorOutOfMemory,
    kErrorMalformedInput,
};

宏命名:

命名: MY_MACRO_THAT_SCARES_SMALL_CHILDREN.

除非不得不用尽量不适用宏。

命名规则的特例:

如果你命名的实体与已有 C/C++ 实体相似, 可参考现有命名策略.

bigopen(): 函数名, 参照 open() 的形式

uint`: `typedef

bigpos: structclass, 参照 pos 的形式

sparse_hash_map: STL 型实体; 参照 STL 命名约定

LONGLONG_MAX`: 常量, 如同 `INT_MAX
### Google 编程命名规范概述 Google 的编程命名规范主要关注于代码的可读性和一致性,从而提高开发效率并降低维护成本。以下是关于变量、函数以及类的命名规则的具体描述: #### 变量命名 变量名应具有描述性且简洁明了,通常采用小写字母开头的驼峰式命名法(lowerCamelCase)。这种命名方式可以清晰表达变量的作用范围及其用途[^1]。 对于局部变量而言,其名称应当直观反映该变量存储的数据内容或者功能目的;而对于全局变量,则需更为详尽以便区分不同模块间的同名冲突可能性。例如,在某些情况下,“count”作为局部计数器是可以接受的,但如果是一个跨文件共享的状态指示符,则可能需要命名为“globalOperationCount”。 #### 函数命名 函数的名字应该清楚地传达它们执行的操作是什么,并遵循动宾结构来增强语义明确度。同样推荐使用大写首字母形式即UpperCamelCase表示方法声明[^1]。 另外值得注意的是返回布尔值类型的函数前缀最好加上is, has之类的词组以表明此操作是用来判断条件真假而非其他动作实施者。“isValidUserInput()”就是一个很好的例子因为它立即告诉读者这个调用是用来验证用户输入有效性的逻辑单元。 #### 类命名 类定义一般都采取PascalCase也就是每一个单词的第一个字母都是大写的组合而成的形式呈现出来。这样的约定可以帮助程序员一眼就能识别哪些标识属于类型定义而不是普通的成员属性或者是行为指令集的一部分。 像`NetworkConnector`这样既表达了实体又包含了具体职责信息的名字比起单纯缩写的版本更容易让人一目了然知道它代表什么概念同时也方便后续扩展维护工作开展下去不会因为过于简化的术语造成混淆误解现象发生几率增加的情况出现。 ```python class NetworkConnector: def __init__(self): self.connection_status = False def establish_connection(self): # Implementation details here... pass def is_valid_user_input(self, input_data): return True if isinstance(input_data, str) else False ``` 以上展示了一个简单的Python类实现案例,其中展示了如何按照Google的标准来进行有效的命名实践。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值