cocos2d c++ 代码规范(译文)
原文在http://cocos2d-x.org/projects/cocos2d-x/wiki/Cocos2d_c++_coding_style,我觉得这个规范非常全面,写的非常好,我只捡一些我认为比较重要的翻译下,有错误的地方请指正,谢谢。
cocos2d c++ 代码规范
c++代码规范是基于Google c++代码规范的3.260版
头文件
通常,每个cpp文件应该有个关联的.h文件,当然也有些例外,例如单元测试和小的cpp直接包含在一个main函数里。
正确的头文件用法可以在可读性,大小,你代码的效率上产生很大的不同。
下面的规则可以引导你越过各种关于头文件的陷阱:
头文件守卫宏 (俗称宏卫兵)
所有的头文件应该有#define守卫以防止被多次包含,符号名字格式应该是 工程名_路径_文件_H。
为了确保唯一性,他们应该基于工程的完整的路径树,例如文件foo/src/bar/baz.h在foo工程中应该有如下的守卫宏
#ifndef FOO_BAR_BAZ_H_ #define FOO_BAR_BAZ_H_ ... #endif // FOO_BAR_BAZ_H_
前向声明
你可以前向声明一个普通的类以避免不必要的include
定义:
一个前向声明就是一个类,函数或模版的生命,没有相关联的定义。#include通常可以把那些被当作客户代码的符号用前向声明来代替。
结论:
当时要使用一个头文件里的函数时,那就直接包含那个头文件
当用类模板时最好包含他的头文件
当使用一个普通的类,使用前向声明没问题,但是当心那种前向声明可能不明确或者不正确时,或者有些怀疑时,那就直接包含适当的头文件。
不要把成员数据用指针代替以避免#include
通常直接包含那你需要的能提供声明或者定义的头文件;不要依赖那些过度的非直接包含过来的符号。有一个例外就是myfile.cpp可能依赖跟他相应的头文件myfile.h那里的#include和前向声明。(这句我翻译的我自己的都魔灵两颗)
内联函数
定义一个内敛函数当且仅当(^_^)他们很小,10行或者更少。
定义:
你可以让编译器用函数调用原理去展开他们而不是去调用他们的方式声明一个函数。
结论:
一个正统的规则就是如果他比10行还长久要不用内联,你要清楚析构通常比他们出现时长因为他们隐士的成员和基类的析构调用(我已经晕了)。
你必须知道函数并不总是内敛尽管它有可能满足以上条件。例如虚函数和递归函数通常不内敛。通常递归函数不内敛。把一个虚函数当成内敛那样定义在类内部的主要原因是既方便又可以注释他的行为,例如访问器和调整器(虚函数是不会被编译器当成内敛的)
原文内容有点多,今天先到这,以后慢慢补充。