版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
让虚拟世界和现实世界成为相互的起点和终点工具开发支持管理蜗牛游戏程序编码规范(版本0.1)规范说明: 1一、命名规则 2二、程序的版式 3三、注释 5四、服务端平台无关 7五、服务端表格操作 7六、客户端文件读写 8七、客户端内存操作 8八、脚本内的注释 9规范说明:制定该规范的目的是让程序清晰易懂、易维护、易管理。该规范为强制规范,必须执行,如果有没涉及的地方请参考《高质量C++-C编程指南》。当所在编程环境(如MFC、Linux)与本规范有差异时,可以使用所在编程环境的规范,但是同一个项目必须是统一的规范。最后希望大家都能养成一个良好的程序习惯,一个好的习惯受益终身!命名规则1.所有命名应当直观且可拼读,并具有实际意义;2.类名和函数名用大写字母开头的单词组合而成,接口类名以I开头;3.常量全用大写的字母,用下划线分割单词,尽量不要使用宏;4.类的数据成员加前缀m_,全局变量加前缀g_,静态变量加前缀s_;5.变量名第一个字母小写,使用“名词”或“形容词+名词”的词义表示法;示例:·局部变量char*pStringBuffer;int&stringFindResult;boolisEngineStartup;·函数命名unsignedintGetVoyageCoreState();staticboolGetVoyageServiceCount(int&count);·结构类型structNodeValue{ intwidth;intheight;}·枚举类型(枚举值必须大写且有前缀)enumVoyageSupportType{ VOYAGE_OS_SUPPORT_INVALID=1, VOYAGE_OS_SUPPORT_WINDOWS=2}·联合类型unionColor{ unsignedchararrColor[3]; structColorRGB { unsignedcharr; unsignedcharg; unsignedcharb; };};·类类型……… //获得字符串长度。 intlength=(int)strlen(pString); //如果长度为空,直接将当前String类对象置空。 if(0==length) { m_pString=NULL; m_length =0; }………注释对外暴露的模块接口全部要求使用“doxygen”注释对文件、类、函数、变量进行注释;所有文件和函数必须有功能说明注释,这里不要使用“doxygen”注释(便于生成程序文档);代码块的起始处必须有该代码块的功能说明注释;4.通信的消息和命令必须有功能和参数注释。“doxygen”注释示例:·接口文件首部/** @file varithmetic.h @brief IString模块是voyage引擎开发以及游戏开发所使用的 算法集合模块。 @author ArmterlaX @date 2007.12.1*/·接口函数注释注意:这些接口注释都是写在头文件里的。注意:接口参数要写[IN]或者是[OUT]以表明参数是输入参数还是输出参数。函数接口注释/** @brief 对任意类型元素的数组进行快速排序。 @param pHead [IN]元素数组首地址。 @param ppDstHead [OUT]输出一组经过排序的指针。*/void QuickSort(void*pHead,void**ppDstHead);·类接口注释/** @brief IString类是用于在Voyage引擎内部进行字符串处理的类。 IString类可以完成快速的字符串连接、分割、字串查找、 字串修改等功能。*/classIString{public: /** @brief IString默认构造函数。 @remarks 使用默认构造函数构造IString对象不会 申请任何堆内存。 */ IString(); /** @brief 使用标准字符串构造IString类对象。 @param pString[IN]指定源字符串。也就是使用哪个字符串构造当前IString对象。 @remarks 这个构造办法会申请堆内存,构造时调用一次堆分配。 分配空间大小与参数指定的字符串长度加1相等。*/IString(constchar*pString);/** @brief 析构函数,如果当前IString类对象已经申请了堆内存, 该函数会释放这个堆内存。*/~IString();………};·通信的消息和命令/**\brief聊天内容信息\param聊天类型,类型int\param聊天内容,类型wstring*/MSG_SERVER_SPEECH=1001模块内部注释示例:·文件首部/* file $FILE$ brief 文件说明 author%USERNAME% date $DATE$*/·函数注释//做地形的可视检测intTerrainSubObject::IsVisible(intx,intz)·变量注释int ValCol; //修改表格的第几列数据服务端平台无关服务端程序不要使用依赖于操作系统的API和数据类型,以及和操作系统相关的规则,以便于未来Windows和Linux平台切换。服务端表格操作服务端表格“Record”的名称定义也要符合命名规范;在操作时不能直接用数字表示列号;示例://表格列号的定义 enum{ CCR_CLONE_SERIAL=0, CCR_CYCLE_TIME, CCR_INTO_COUNT, CCR_COL_COUNT};… //表格定义和访问pKernel->AddRecord(index,"CloneCountRec",CCR_COL_COUNT,128); pKernel->SetRecordColType(index,"CloneCountRec",CCR_CLONE_SERIAL,VARTYPE_INT);//副本号 pKernel->SetRecordColType(index,"CloneCountRec",CCR_CYCLE_TIME,VARTYPE_INT);//进入时间 pKernel->SetRecordColType(index,"CloneCountRec",CCR_INTO_COUNT,VARTYPE_INT);//进入次数 客户端文件读写客户端必须使用引擎提供的API进行文件的打开、读写、关闭等操作。示例:HANDLEhFile=_CORE_API->fio->_CreateFile(filename, GENERIC_READ,0,OPEN_EXISTING); if(hFile==INVALID_HANDLE_VALUE) returnfalse; DWORDLength=_CORE_API->fio->_GetFileSize(hFile,NULL); if(Length>0){ char*pBuffer=newchar[Length+1];_CORE_API->fio->_ReadFile(hFile, (void*)pBuffer,Length,NULL);} _CORE_API->fio->_CloseHandle(hFile);客户端内存操作1.分配内存并调用默认构造函数:char*p=Voy_New(char,23);等价于char*p=newchar[23];CUnit*p=Voy_New(CUnit,2);等价于CUnit*p=newCUnit[2];CUnit*p=Voy_New(CUnit,1);等价于CUnit*p=newCUnit;2.释放内存并调用析构函数:Voy_Delete(p);如果p是某个类的指针,如:CUnit*pUnit=Voy_New(CUnit,2);char*p=(char*)pUnit;Voy_Delete(p);这个时候不会调用CUnit的析构函数,因为传给Voy_Delete的指针是一个char*的指针,Voy_Delete认为char*指针没有析构函数。因此,这种情况下,必须把p转换为Voy_Delete可接受的格式:(对指针的引用)Voy_Delete((CUnit*&)p);//这样就能正确地调用析构函数Voy_Delete和Voy_Free会检查传入的指针是否为空,也会在删除后自动把传入的指针设为空。3.如果只想分配内存,而不想调用构造函数,可以调用:char*p=Voy_Malloc(char,1024);4.如果只想释放内存,而不想调用析构函数,可以调用:Voy_Free(p);或者:Voy_Delete((char*&)p);5.如果某个类的构造函数需
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山西医科大学《中学思想政治课标解读》2023-2024学年第一学期期末试卷
- 2024年矿山开采前期勘探合同
- 2024年版隧道工程边坡维护合同3篇
- 2024年版个人借款抵押区块链技术服务合同
- 2024年电地暖工程分包合同3篇
- 智能交通系统课程设计
- 2024年度生态农业园委托经营合作协议3篇
- 2024年版高档写字楼租赁合同3篇
- 2024年教育机构实习实训合作协议书3篇
- 2024年版住宅小区物业管理服务合同范本版
- 河南省郑州市金水区2023-2024学年四年级数学第一学期期末统考试题含答案
- 服装设计习题含参考答案
- 人教版八年级上册英语重点单词+短语+句子默写大全
- 建筑能源管理系统-设计说明书
- 广东省各地市地图(可编辑)课件
- 《思想道德与法治》学习法治思想 提升法治素养-第六章
- 浅谈PROFIBUS-DP现场总线在桥式起重机地应用
- 建筑工地农民工业余学校教学台帐
- 2023年应急管理部宣传教育中心招聘笔试备考试题及答案解析
- 单位实习生意外应急预案
- T-DLSHXH 002-2023 工业干冰标准规范
评论
0/150
提交评论