程序编码规范标准详.docx
- 文档编号:1633101
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:10
- 大小:19.05KB
程序编码规范标准详.docx
《程序编码规范标准详.docx》由会员分享,可在线阅读,更多相关《程序编码规范标准详.docx(10页珍藏版)》请在冰豆网上搜索。
程序编码规范标准详
蜗牛游戏程序编码规范<版本0.1>
规范说明:
制定该规范的目的是让程序清晰易懂、易维护、易管理。
该规范为强制规范,必须执行,如果有没涉及的地方请参考《高质量C++-C编程指南》。
当所在编程环境<如MFC、Linux>与本规范有差异时,可以使用所在编程环境的规范,但是同一个项目必须是统一的规范。
最后希望大家都能养成一个良好的程序习惯,一个好的习惯受益终身!
一、命名规则
1.所有命名应当直观且可拼读,并具有实际意义;
2.类名和函数名用大写字母开头的单词组合而成,接口类名以I开头;
3.常量全用大写的字母,用下划线分割单词,尽量不要使用宏;
4.类的数据成员加前缀m_,全局变量加前缀g_,静态变量加前缀s_;
5.变量名第一个字母小写,使用"名词"或"形容词+名词"的词义表示法;
示例:
·局部变量
char*pStringBuffer;
int&stringFindResult;
boolisEngineStartup;
·函数命名
unsignedintGetVoyageCoreState<>;
staticboolGetVoyageServiceCount
·结构类型
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
virtualintGetArea<>;//虚函数
inlineintGetWidth<>;//内联函数
};
·抽象类
classISpriteManager
{
public:
virtualintGetSpriteID<>=0;
virtualboolIsSpriteExist<>=0;
};
·自定义类型
typedefunsignedintNumber;
·全局变量<我们不主张使用全局变量>
intg_howManyPeople;
·静态变量
staticchar*s_pStringBuffer;
·常量
constfloatSPRINT_RADIUS=100.0f;
·回调函数
typedefint<*CALLBACK_SYSTEMINIT_FUNC>
二、程序的版式
1.一行代码只做一件事情,只写一条语句,语句排版整齐;
2.关键字之后要留空格,赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如"="、"+="">="、"<="、"+"、"*"、"%"、"&&"、"||"、"<<","^"等二元操作符的前后应当加空格,一元操作符如"!
"、"~"、"++"、"--"、"&"〔地址运算符等前后不加空格,象"[]"、"."、"->"这类操作符前后不加空格;
3.程序的分界符‘{’和‘}’应独占一行并且位于同一列,同时与引用它们的语句左对齐。
{}之内的代码块在‘{’右边4格处左对齐,这里的4格也可以是VisualStudio里的一个TAB;
4.代码行最大长度宜控制在80个字符以内;
5.代码应按功能分块,代码块之间必须有空行,而且每个代码块不要超过10行。
示例:
·语句分行和空格<▲表示空格>
for▲ ▲&&▲ i++,▲j++> { ...//programcode } if▲ { … } elseif▲ { … } else { … } while▲▲b> { … } do { … }while▲▲b>; switch▲ { case▲1: ▲▲▲▲{ ▲▲▲▲w▲=▲w▲+▲2; } break; } ·代码块 ……… //获得字符串长度。 intlength= //如果长度为空,直接将当前String类对象置空。 if<0==length> { m_pString=NULL; m_length=0; } ……… 三、注释 1.对外暴露的模块接口全部要求使用"doxygen"注释对文件、类、函数、变量进行注释; 2.所有文件和函数必须有功能说明注释,这里不要使用"doxygen"注释<便于生成程序文档>; 3.代码块的起始处必须有该代码块的功能说明注释; 4.通信的消息和命令必须有功能和参数注释。 "doxygen"注释示例: ·接口文件首部 /** filevarithmetic.h briefIString模块是voyage引擎开发以及游戏开发所使用的 算法集合模块。 authorArmterlaX */ ·接口函数注释 注意: 这些接口注释都是写在头文件里的。 注意: 接口参数要写[IN]或者是[OUT]以表明参数是输入参数还是输出参数。 函数接口注释 /** brief对任意类型元素的数组进行快速排序。 parampHead [IN]元素数组首地址。 paramppDstHead [OUT]输出一组经过排序的指针。 */ voidQuickSort ·类接口注释 /** briefIString类是用于在Voyage引擎内部进行字符串处理的类。 IString类可以完成快速的字符串连接、分割、字串查找、 字串修改等功能。 */ classIString { public: /** briefIString默认构造函数。 remarks使用默认构造函数构造IString对象不会 申请任何堆内存。 */ IString<>; /** brief使用标准字符串构造IString类对象。 parampString [IN]指定源字符串。 也就是使用哪个字符串构造当前IString对象。 remarks这个构造办法会申请堆内存,构造时调用一次堆分配。 分配空间大小与参数指定的字符串长度加1相等。 */ IString /** brief析构函数,如果当前IString类对象已经申请了堆内存, 该函数会释放这个堆内存。 */ ~IString<>; ……… }; ·通信的消息和命令 /** \brief聊天内容信息 \param聊天类型,类型int \param聊天内容,类型wstring */ MSG_SERVER_SPEECH=1001 模块内部注释示例: ·文件首部 /* file$FILE$ brief文件说明 author%USERNAME% date$DATE$ */ ·函数注释 //做地形的可视检测 intTerrainSubObject: : IsVisible ·变量注释 intValCol;//修改表格的第几列数据 四、服务端平台无关 1.服务端程序不要使用依赖于操作系统的API和数据类型,以及和操作系统相关的规则,以便于未来Windows和Linux平台切换。 五、服务端表格操作 1.服务端表格"Record"的名称定义也要符合命名规范; 2.在操作时不能直接用数字表示列号; 示例: //表格列号的定义 enum { CCR_CLONE_SERIAL=0, CCR_CYCLE_TIME, CCR_INTO_COUNT, CCR_COL_COUNT }; ………………… //表格定义和访问 pKernel->AddRecord pKernel->SetRecordColType CCR_CLONE_SERIAL,VARTYPE_INT>;//副本号 pKernel->SetRecordColType CCR_CYCLE_TIME,VARTYPE_INT>;//进入时间 pKernel->SetRecordColType CCR_INTO_COUNT,VARTYPE_INT>;//进入次数 六、客户端文件读写 1.客户端必须使用引擎提供的API进行文件的打开、读写、关闭等操作。 示例: HANDLEhFile=_CORE_API->fio->_CreateFile if returnfalse; DWORDLength=_CORE_API->fio->_GetFileSize if { char*pBuffer=newchar[Length+1]; _CORE_API->fio->_ReadFile } _CORE_API->fio->_CloseHandle 七、客户端内存操作 1.分配内存并调用默认构造函数: char*p=Voy_New CUnit*p=Voy_New CUnit*p=Voy_New 2.释放内存并调用析构函数: Voy_Delete ; 如果p是某个类的指针,如: CUnit*pUnit=Voy_New char*p= Voy_Delete ; 这个时候不会调用CUnit的析构函数,因为传给Voy_Delete的指针是一个char*的指针,Voy_Delete认为char*指针没有析构函数。 因此,这种情况下,必须把p转换为Voy_Delete可接受的格式: <对指针的引用> Voy_Delete< Voy_Delete和V
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 编码 规范 标准