程序编码规范
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);