引擎之旅 前传:C++代码规范
自己以前写代码时,一个项目一个风格。单人开发的工作使得我并没有注意到代码规范性和可读性的问题。每当项目结束后,看到自己杂乱无章的代码,完全没有二次开发和重构的欲望。
写代码就应该像写诗一样优雅。 by:沃茨基硕德
由于是一个新的项目的重新起航。千里之堤,溃于蚁穴。我将代码规范作为我整个项目的前传,顺便也把我之前的陋习给改掉。通过在网上对于C++代码规范的搜索,我找到了Google开源项目风格指南[译文]。
参考这份指南,结合我个人的习惯,我也给自己的项目制定了一个标准。下面将各个部分进行定义和规范。(不会完全按照指南,只是为了我的项目代码看起来更统一)
头文件
- 通常一个.cpp文件需要对应一个.h文件。(单元测试代码和包含main()函数的cpp文件除外。)
- 如果.h文件声明了一个模板和内联函数,规定将函数实现写在头文件中。
- 每个头文件必须使用#define保护,以防止多重编译
#ifndef HeadName
#define HeadName
//...
#endif //HeadName
- 前置声明能不用则尽量不用。优先处理好头文件之间的关系,若不得不使用,则要注明依赖关系。
- 内联函数:代码行数<10 才使用内联函数
命名
- 作用域、类名、函数名用大写字母开头
namespace TurboEngine{
class Time
{
public:
int GetFps();
public:
static int ms_CalType; //静态变量 ms_
int m_StartTime; //成员变量 m_
const mk_DayInWays; //常量命名 mk_
}
}
注释
- 使用// 或 /**/即可
- 文件注释:加上版权
- 类注释:
// <Description>
// Example:
// xxxxxxxxx(可写可不写)
其他
- 因为引擎中是分模块的,为了更方便今后整理自己的思绪,我希望自己能够对每一个模块用单独的注释文件进行注释。注释文档主要包括:
- 描述
- 文件列表
- 其他说明
- 第三方依赖
<Description>
//...
<FileList>
//...
<Others>
//...
<Reference>
//...
- 整理API文档工具