程序编码规范

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

程序编码规范 Prepared on 22 November 2020

蜗牛游戏程序编码规范 (版本

规范说明:

制定该规范的目的是让程序清晰易懂、易维护、易管理。该规范为强制规范,必须执行,如果有没涉及的地方请参考《高质量C++-C编程指南》。当所在编程环境(如MFC、Linux)与本规范有差异时,可以使用所在编程环境的规范,但是同一个项目必须是统一的规范。

最后希望大家都能养成一个良好的程序习惯,一个好的习惯受益终身!

一、命名规则

1.所有命名应当直观且可拼读,并具有实际意义;

2.类名和函数名用大写字母开头的单词组合而成,接口类名以I开头;

3.常量全用大写的字母,用下划线分割单词,尽量不要使用宏;

4.类的数据成员加前缀m_,全局变量加前缀g_,静态变量加前缀s_;

5.变量名第一个字母小写,使用“名词”或“形容词+名词”的词义表示法;

示例:

·局部变量

char *pStringBuffer;

int &stringFindResult;

bool isEngineStartup;

·函数命名

unsigned int GetVoyageCoreState();

static bool GetVoyageServiceCount(int &count);

·结构类型

struct NodeValue

{

int width;

int height;

}

·枚举类型(枚举值必须大写且有前缀)

enum VoyageSupportType

{

VOYAGE_OS_SUPPORT_INVALID = 1,

VOYAGE_OS_SUPPORT_WINDOWS = 2

}

·联合类型

union Color

{

unsigned cha r arrColor[3];

struct ColorRGB

{

unsigned char r;

unsigned char g;

unsigned char b;

};

};

·类类型

class Object

{

1.int m_width; 100.0f、“->”这类操作符前后不加空格;2.程序的分界符‘{’和‘}’应独占一行并且位于同一列,同时与引用它们的语句左对齐。{ }之内的代码块在‘{’右边4格处左对齐,这里的4格也可以是Visual Studio里的一个TAB;

3.代码行最大长度宜控制在80个字符以内;

4.代码应按功能分块,代码块之间必须有空行,而且每个代码块不要超过10行。

示例:

·语句分行和空格(表示空格)

for(int i=0,j=0;

(i

i++,j++)

{

... 通信的消息和命令必须有功能和参数注释。

“doxygen”注释示例:

·接口文件首部

/**

@file

@brief IString模块是voyage引擎开发以及游戏开发所使用的

算法集合模块。

@author Armterla X

@date 接口函数注释

注意:这些接口注释都是写在头文件里的。

注意:接口参数要写[IN]或者是[OUT]以表明参数是输入参数还是输出参数。函数接口注释

/**

@brief 对任意类型元素的数组进行快速排序。

@param pHead

[IN]元素数组首地址。

@param ppDstHead

[OUT]输出一组经过排序的指针。

*/

void QuickSort(void *pHead, void **ppDstHead);

·类接口注释

/**

@brief IString类是用于在Voyage引擎内部进行字符串处理的类。

IString类可以完成快速的字符串连接、分割、字串查找、

字串修改等功能。

*/

class IString

{

public:

/**

@brief IString默认构造函数。

@remarks 使用默认构造函数构造IString对象不会

申请任何堆内存。

*/

IString();

/**

@brief 使用标准字符串构造IString类对象。

@param pString

[IN]指定源字符串。也就是使用哪个字符串构造当前

IString对象。

@remarks 这个构造办法会申请堆内存,构造时调用一次堆分配。

分配空间大小与参数指定的字符串长度加1相等。

*/

IString(const char* pString);

/**

@brief 析构函数,如果当前IString类对象已经申请了堆内存,

该函数会释放这个堆内存。

*/

~IString();

………

};

·通信的消息和命令

/**

\brief 聊天内容信息

\param 聊天类型,类型int

\param 聊天内容,类型wstring

*/

MSG_SERVER_SPEECH = 1001

模块内部注释示例:

·文件首部

/*

file $FILE$

brief 文件说明

author %USERNAME%

date $DATE$

*/

·函数注释

分配内存并调用默认构造函数:

char *p = Voy_New(char, 23); 等价于char *p = new char[23]; CUnit *p = Voy_New(CUnit, 2); 等价于 CUnit *p = new CUnit[2]; CUnit *p = Voy_New(CUnit, 1); 等价于 CUnit *p = new CUnit;

2. 释放内存并调用析构函数:

Voy_Delete(p);

如果p是某个类的指针,如:

CUnit *pUnit = Voy_New(CUnit, 2);

char *p = (char *)pUnit;

Voy_Delete(p);

相关文档
最新文档