程序编码规范
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
蜗牛游戏程序编码规范 (版本 0.1)
规范说明: (1)
一、命名规则 (1)
二、程序的版式 (3)
三、注释 (5)
四、服务端平台无关 (7)
五、服务端表格操作 (7)
六、客户端文件读写 (7)
七、客户端内存操作 (8)
八、脚本内的注释 (9)
规范说明:
制定该规范的目的是让程序清晰易懂、易维护、易管理。该规范为强制规范,必须执行,如果有没涉及的地方请参考《高质量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
{
int m_width; //宽度
int m_height; //高度
void SetValue(int width, int height); // 成员函数
virtual int GetArea(); // 虚函数
inline int GetWidth(); // 内联函数};
·抽象类
class ISpriteManager
{
public:
virtual int GetSpriteID() = 0;
virtual bool IsSpriteExist() = 0;
};
·自定义类型
typedef unsigned int Number;
·全局变量(我们不主张使用全局变量)
int g_howManyPeople;
·静态变量
static char *s_pStringBuffer;
·常量
const float SPRINT_RADIUS = 100.0f;
·回调函数
typedef int(*CALLBACK_SYSTEMINIT_FUNC)(IKernel * pKernel);
二、程序的版式
1.一行代码只做一件事情,只写一条语句, 语句排版整齐;
2.关键字之后要留空格,赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如“=”、“+=”“>=”、“<=”、“+”、“*”、“%”、“&&”、“||”、“<<”,“^”等二元操作符的前后应当加空格,一元操作符如“!”、“~”、“++”、“--”、“&”(地址运算符)等前后不加空格,象“[]”、“.”、“->”这类操作符前后不加空格;
3.程序的分界符‘{’和‘}’应独占一行并且位于同一列,同时与引用它们的语句左对齐。{ }之内的代码块在‘{’右边4格处左对齐,这里的4格也可以是Visual Studio里的一个TAB;
4.代码行最大长度宜控制在80个字符以内;
5.代码应按功能分块,代码块之间必须有空行,而且每个代码块不要超过10行。
示例:
·语句分行和空格(▲表示空格)
for▲(int i▲=▲0,▲j▲=▲0;
(i▲<▲backBufferWidth)▲&&▲(j▲<▲backBufferHeight);
i++,▲j++)
{
... // program code
}
if▲(n▲>▲5)
{
…
}
else if▲(n▲<▲0)
{
…
}
else
{
…
}
while▲(a▲>▲b)
{
…
}
do
{
…
}while▲(a▲>▲b);
switch▲(n)
{
case▲1:
▲▲▲▲{
▲▲▲▲w▲=▲w▲+▲2;
}
break;
}
·代码块
………
// 获得字符串长度。
int length = (int)strlen(pString);
// 如果长度为空,直接将当前String类对象置空。