Google C++ style guide——命名约定

本文详细阐述了编程中关于命名规则、文件命名、类型命名、变量命名、常量命名、函数命名、命名空间、枚举命名及宏命名的规范与最佳实践。遵循这些规则有助于提高代码的可读性和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.通过命名规则
函数命名、变量命名、文件命名应具有描述性。
类型和变量应该是名词,函数名可以用“命令性”动词。


2.文件命名
文件名全部小写,可以包含下划线(_)或者断线(-)。foo_bar.h、foo_bar.cc
类型命名
每个单词以大写字母开头,不包含下划线。MyClass


3.类型命名
所有类型命名——类、结构体、类型定义、枚举——使用相同约定。class FooClass{...}、enum FooType{...}


4.变量命名
变量名一律小写,单词间以下划线相连,类的成员变量以下划线结尾。
my_value、my_value_。
结构体的数据成员可以和普通变量一样,不用像类那样接下划线。
全局变量可以以g_为前缀。


5.常量命名
(无论是局部的、全局的还是类中的)以k为前缀,k后接大写字母开头的单词。


6.函数命名
普通函数名以大写字母开头,每个单词首字母大写,没有下划线。
存取函数要与存取的变量名匹配。例:
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_;
}


其他短小的内联函数名也可以使用小写字母。小写的函数名意味着可以直接内联使用。




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


8.枚举命名
枚举值应全部大写,单词间以下划线相连。
枚举名称属于类型,因此大小写混合。例:
enum UrlTableErrors
{
OK = 0,
ERROR_OUT_OF_MEMORY,
ERROR_MALFORMED_INPUT
}


9.宏命名
全部大写,单词间使用下划线。

<think>好的,我现在需要回答用户关于“Google C++ Style Guide”的问题。首先,用户可能已经知道这是一个编码规范,但需要更详细的解释。 首先,我得回忆一下GoogleC++风格指南的基本信息。这个指南是Google为其内部C++代码制定的规范,旨在保持代码一致性和可维护性。接下来,我需要确认它的主要内容和特点。 用户可能想知道这个指南包括哪些方面,比如格式、命名约定、头文件管理、类设计等。此外,可能还要说明为什么这个指南重要,以及它与其他风格指南的不同之处。 需要提到的是,尽管名为C++指南,但用户之前的问题是关于C语言的,所以可能需要指出虽然主要针对C++,但部分内容也适用于C,比如命名规范和代码结构。但也要注意区分,避免混淆。 另外,用户可能想知道如何访问这个指南,是否需要链接,但根据要求不能提供链接,所以只能建议他们通过搜索引擎查找。 还要考虑用户可能的实际应用,比如是否推荐他们遵循这个指南,以及是否有其他替代方案。不过根据用户的问题,可能只需要客观介绍,不需要比较。 需要确保回答结构清晰,分点说明主要内容、特点、适用场景等。同时语言要简洁,避免技术术语过多,让初学者也能理解。 最后检查是否有遗漏的重要点,比如代码示例,但根据之前的回答,用户可能不需要具体代码,而是概述。所以总结主要部分即可。</think>以下是关于Google C++ Style Guide的详细介绍: --- ### **Google C++ Style Guide是什么?** 这是Google为内部C++项目制定的**代码编写规范**,旨在统一编程风格、提升代码可读性和维护性。虽然主要针对C++,但其部分规范(如命名约定、格式要求)也适用于C语言项目。 --- ### **核心内容解析** 1. **代码格式** - 缩进:**2空格**(非Tab) - 行宽:**80字符**限制 - 函数/类:大括号换行风格 ```c // 函数定义示例 void do_something(int param) { if (condition) { // ... } } ``` 2. **命名规范** - 变量:小写+下划线(`my_variable`) - 常量:k开头+大写(`kMaxSize`) - 函数:动词+小写(`calculate_sum()`) - 类型名:大写驼峰(`MyClassType`) 3. **头文件管理** - 禁止使用`.cc`包含`.cpp`文件 - 头文件保护宏格式:`PROJECT_PATH_FILE_H_` - 尽量使用`#include "project/header.h"`格式 4. **内存与资源** - 禁止使用裸指针(C++特性,C语言不适用) - 强调资源获取即初始化(RAII)原则 5. **异常与错误处理** - 禁用C++异常机制(但对C语言无影响) - 建议使用错误码返回机制 --- ### **主要特点** | 特性 | 说明 | |-------|------| | **严格性** | 比ISO标准更严格(如禁用RTTI) | | **工具友好** | 兼容clang-format等自动化工具 | | **性能导向** | 禁止影响性能的特性(如异常处理) | | **跨平台** | 注重Linux/Windows/macOS兼容性 | --- ### **适用场景** 1. 大型多人协作项目 2. 需要长期维护的代码库 3. 对代码可读性要求高的场景 4. 企业级代码审计需求 --- ### **争议与批评** 1. **部分规则过于严苛** - 例如禁用C++11的auto关键字(后期已放宽) 2. **与社区习惯冲突** - 如函数参数顺序:输入参数在前,输出参数在后 3. **不完全符合ISO标准** - 选择性禁用某些C++特性 --- ### **学习建议** 1. **阅读方式** - 官方英文文档(可通过搜索引擎找到) - 中文社区翻译版本(注意版本差异) 2. **实践工具** ```bash # 使用clang-format自动格式化 clang-format -i --style=google myfile.c ``` 3. **替代方案参考** - LLVM Coding Standards - Linux Kernel Coding Style(更贴近C语言) --- 遵循该规范可使代码具有**工业级健壮性**,但初学者建议先掌握基础语法再深入学习规范细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值