1 / 14
文档名称:

程序编码规范.doc

格式:doc   大小:2,081KB   页数:14页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

程序编码规范.doc

上传人:艾米 2022/10/17 文件大小:2.03 MB

下载得到文件列表

程序编码规范.doc

文档介绍

文档介绍:该【程序编码规范 】是由【艾米】上传分享,文档一共【14】页,该文档可以免费在线阅读,需要了解更多关于【程序编码规范 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。程序编码规范
让虚拟世界和现实世界成为相互的起点和终点
-2-
工具开发支持管理
蜗牛游戏程序编码规范()
规范说明: 3
一、命名规则 3
二、程序的版式 5
三、注释 7
四、服务端平台无关 9
五、服务端表格操作 9
六、客户端文件读写 10
七、客户端内存操作 11
八、脚本内的注释 12
让虚拟世界和现实世界成为相互的起点和终点
-3-
工具开发支持管理
规范说明:
制定该规范的目的是让程序清晰易懂、易维护、易管理。该规范为强制规范,必须执行,如果有没涉及的地方请参考《高质量C++-C编程指南》。当所在编程环境(如MFC、Linux)与本规范有差异时,可以使用所在编程环境的规范,但是同一个项目必须是统一的规范。
最后希望大家都能养成一个良好的程序习惯,一个好的习惯受益终身!
命名规则
,并具有实际意义;
,接口类名以I开头;
,用下划线分割单词,尽量不要使用宏;
,全局变量加前缀g_,静态变量加前缀s_;
,使用“名词”或“形容词+名词”的词义表示法;
示例:
·局部变量
char*pStringBuffer;
int&stringFindResult;
boolisEngineStartup;
让虚拟世界和现实世界成为相互的起点和终点
-4-
工具开发支持管理
·函数命名
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;
};
};
·类类型
classObject
{
intm_width;//宽度
intm_height;//高度
voidSetValue(intwidth,intheight);//成员函数
virtualintGetArea();//虚函数
inlineintGetWidth();//内联函数
};
·抽象类
classISpriteManager
{
让虚拟世界和现实世界成为相互的起点和终点
-5-
工具开发支持管理
{

}
elseif▲(n▲<▲0)
{

}
else
{

}
while▲(a▲>▲b)
{

}
do
{

}while▲(a▲>▲b);
switch▲(n)
{
case▲1:
▲▲▲▲{
▲▲▲▲w▲=▲w▲+▲2;
}
break;
}
·代码块
………
//获得字符串长度。
intlength=(int)strlen(pString);
//如果长度为空,直接将当前String类对象置空。
if(0==length)
{
m_pString=NULL;
m_length =0;
}
………
让虚拟世界和现实世界成为相互的起点和终点
-6-
工具开发支持管理
注释
对外暴露的模块接口全部要求使用“doxygen”注释对文件、类、函数、变量进行注释;
所有文件和函数必须有功能说明注释,这里不要使用“doxygen”注释(便于生成程序文档);
代码块的起始处必须有该代码块的功能说明注释;

“doxygen”注释示例:
·接口文件首部
/**
***@file
***@brief IString模块是voyage引擎开发以及游戏开发所使用的
算法集合模块。
***@author ArmterlaX
***@date
*/
·接口函数注释
注意:这些接口注释都是写在头文件里的。
注意:接口参数要写[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对象不会
让虚拟世界和现实世界成为相互的起点和终点
-7-
工具开发支持管理
申请任何堆内存。
*/
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$
*/
·函数注释
//做地形的可视检测
让虚拟世界和现实世界成为相互的起点和终点
-8-
工具开发支持管理
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,
让虚拟世界和现实世界成为相互的起点和终点
-10-
工具开发支持管理
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);
让虚拟世界和现实世界成为相互的起点和终点
-11-
工具开发支持管理