Google编程规范笔记

一.关于命名空间

1. .cc中的不具名命名空间可避免命名冲突、限定作用域,避免直接使用using提示符污染命名空间。

2. 嵌套类符合局部使用原则。只是不能在其他文件中前置声明,尽量不要用public

3. 尽量不要用全局变量和全局函数,考虑作用域和命名空间限制,尽量单独形成编译单元。

4. 多线程中的全局变量(含静态成员变量)不要使用class类型(STL容器),避免不明确行为导致的bug

5. 作用域的使用,除了考虑名称污染、可读性之外,主要是为降低耦合度,提高编译、执行效率。

 

二.关于类

1.单参数构造函数使用C++关键字explicit,避免调用时造成隐式转换;

eg: explicit Foo(string name);

2.可以考虑在类的private中添加只有声明没有定义的空拷贝构造函数、赋值操作。当其他代码企图使用它们的时候,      编译器会自动报错。

3.绝大多数情况是不需要拷贝的,如果确实需要拷贝,应在该头文件中说明原由,并适当定义拷贝构造函数和赋值操      作。注意在operator=检测自赋值情况。

4.仅当只有数据时使用struct,其他一概用class

5.使用组合通常比继承更适宜。如果继承的话,使用只公共继承

6.在含虚函数的父类中,定义虚析构函数是绝对必要的。

7.静态函数存放于对象模型内存之外。与类继承无关。

8.类中定义次序为:public:protected:private:。每一块中声明次序为:

1). Typedef 和 enum

2). 常量

3). 构造函数

4). 析构函数

5). 成员函数,含静态成员函数

6). 数据成员,含静态数据成员

9. 子类重载的虚函数也要声明virtual关键字

三.关于指针

1.如果确实需要使用智能指针的话,scoped_ptr完全可以胜任。特殊情况下例如对STL容器中对象,应该只使用std::tr1::shared_ptr。任何情况下都不要使用auto_ptr

四.关于其他C++特性

1.函数形参表中所有引用必须是const

2.禁止使用缺省函数参数,避免使用可能不为程序员所知的缺省参数。

3.禁止使用变长数组和alloca(),它们在堆栈中根据数据分配大小可能导致难以发现的内存泄露。使用安全的分配器,如scoped_ptr/scoped_array

4.使用static_<>()C++类型转换。不要使用int y = (int)x;

5.只在记录日志时使用流(streams)。用printf()代替。

6.左大括号总在最后一个参数同一行末尾处。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值