google c++编程规范(重点记录)

一:头文件 作用域

使用前置声明,减少.h文件的#include数量,减少编译依赖

函数输入参数在前(const references),输出参数在后(non-const pointer)

include顺序:c,c++,其他库,本项目库

函数,类内部使用 using ::foo::bar 或 namespace fez = ::foo::bar::baz

减少不必要的构造函数和析构函数调用(定义初始化,变量位置,++前置)


二:类

对单参数构造函数使用 C++关键字 explicit,避免不期望的隐式类型转换

#define DISALLOW_COPY_AND_ASSIGN(TypeName) \

 TypeName(const TypeName&); \

 void operator=(const TypeName&)

用做base class的destruct声明为virtual

使用防函数而不是操作符重载

编写短小的函数(40行)!!

仅在输入参数类型不同、功能相同时使用重载函数

将友元定义在同一文件下

使用static_cast<>,lexical_cast<>,除测试不使用dynamic_cast<>

使用断言声明变量为非负数,不要使用无符号型。


三:命名

类型和变量:名词 函数:指令性

类型名:大写开头不含下划线 UrlTable

成员函数:驼峰型

变量:小写下划线分割,成员变量下划线开始!!

宏和枚举:全大写加下划线!!


四:注释

文件注释:公告 作者信息 文件内容

类注释:类功能 用法

函数注释:

1) inputs(输入)及 outputs(输出); 

2) 对类成员函数而言:函数调用期间对象是否需要保持引用参数,是否会释放这些参数; 3) 如果函数分配了空间,需要由调用者释放;

4) 参数是否可以为 NULL;

5) 是否存在函数使用的性能隐忧(performance implications);

6) 如果函数是可重入的(re-entrant),其同步前提(synchronization assumptions) 是什么?

实现注释:对于实现代码中巧妙的、晦涩的、有趣的、重要的地方加以注释。

TODO注释:// TODO(kl@gmail.com): Use a "*" here for concatenation operator.


五:空格和缩进

class MyClass : public OtherClass {
public: // Note the 1 space indent!
    MyClass(); // Regular 2 space indent.
    explicit MyClass(int var);
    ~MyClass() {}

    void SomeFunction();
    void SomeFunctionThatDoesNothing() {
    }

    void set_some_var(int var) { some_var_ = var; }
    int some_var() const { return some_var_; }

private:
    bool SomeInternalFunction();

    int some_var_;
    int some_other_var_;
    DISALLOW_COPY_AND_ASSIGN(MyClass);
};



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值