Google编码规范

本文详细介绍了Google的C++编码规范,强调不使用异常和智能指针,推荐使用#define防止头文件多重包含,提倡使用前置声明减少#include数量,限制内联函数的使用,规定参数顺序,标准化头文件包含顺序,提倡使用Init()方法初始化,明确禁止和推荐的函数操作,建议使用scoped_ptr,提倡使用const进行类型检查,并推荐使用全大写的TODO注释标记待改进代码。此外,规范中还讨论了异常的优缺点,并基于Google现有代码情况,决定不使用异常。
摘要由CSDN通过智能技术生成

PS:Google的编码规范,与其他编码规范相比比较特殊的地方就是对异常、智能指针的使用,异常要求不使用,智能指针也就是用个scope_ptr。异常C++中使用的本来就不多,不使用异常理由有捕获可能遗漏处理在一些情况下容易出错、破坏了结构化程序流等。与少于智能指针一样,容易导致错误。
其他的还有“不要用省略字母的缩写”,尽量用单词全拼,“并不完美的代码使用 TODO 注释。”,拷贝构造函数的默认禁用,下面是部分规范。

  • 所有头文件都应该使用#define 防止头文件被多重包含(multiple inclusion),命名格式为:
    PROJECT_PATH_FILE_H_

  • 使用前置声明(forward declarations)尽量减少.h 文件中#include 的数量。

  • 当函数只有 10 行甚至更少时才会将其定义为内联函数(inline function)。重要的是,虚函数和递归函数即使被声明为内联的也不一定就是内联函数。通常,递归函数不应该被声明
    为内联的(译者注:递归调用堆栈的展开并不像循环那么简单,比如递归局数在编译时可能是未知的,大
    多数编译器都不支持内联递归函数)。

  • 定义函数时,参数顺序为:输入参数在前,输出参数在后。

  • 将包含次序标准化可增强可读性、避免隐藏依赖(hidden dependencies,注:隐藏依赖主要是指包含的
    文件编译),次序如下:C 库、C++库、其他库的.h、项目内的.h。

  • 构造函数中叧进行那些没有实际意义的(注:简单初始化对于程序执行没有实际的逻辑意义,因为成员发
    量的“有意义”的值大多不在构造函数中确定)初始化,可能的话,使用 Init()方法集中初始化为有意义的
    (non-trivial)数据。

  • 对单参数构造函数使用 C++关键字 explicit。

  • 仅在代码中需要拷贝一个类对象的时候使用拷贝构造函数;不需要拷贝时应使用
    DISALLO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值