|
|
搞游戏的有很大一部分原来并不是计算机系的,所以写出来的程序比较野。尤其是业余的刚开始步入这个领域的。本人也正在经历这种转变。因此,在这里写一下我所领悟的一些东西。希望对初学者有益。
代码组织:
.h 中 1)
用#ifndef xxxx
#define xxxx
#endif xxxx 来定义文件。
2) 尽量少包含其他的头文件,避免物理上的硬关联。
.cpp 1) 尽量在.cpp中包含其他用到的头文件,避免物理上的硬关联。
代码风格:
好的代码首先要有好的代码风格。因此,作为初学者相比较专业的转变的一个比较重要的是确定自己的风格。
变量,函数的格式:
如果写得比较多了,或是离的时间长了,又或是代码给别人看。那么,清楚的代码很大程度上就是靠变量函数的格式了。要让读者一目了然才行。
我一般这样定义:
类中的变量 d_ 开头(很多人喜欢用m_), 全局g_ 开头, 参数,局部变量就没有了。
后面紧跟的是类型,如 b ---- bool, lp-----指针, sz------字符串 等等。
再后面就是 首字母大写变量名。
举个例子。
d_bReady 表示类中变量, 一个bool型的, 标示着各类目前可用。
函数这样定义:
首字母大写。如:void DoLoop(); 等等。
这些自己去坚持着用去寻找自己的风格就好了。用小写加下划线不错,我喜欢。不过好像这种风格的linux下和网络下更喜欢用,windows客户端还是有些区分会比较好??这纯属个人喜好了。
结构,enum,等等的定义都挪进类中就好了。
如
class CFrame
{
public:
enum{
DEF_ERR_NOTHING = 0,
DEF_ERR_OUTOFMEM,
};
struct node
{
......
};
public:
int GetCurErr()
{
return d_iErr;
}
private:
int d_iErr;
...
};
调用的时候会强迫你把类的类型写上去,看上去繁琐一点,不过代码开始读会更清楚一点吧。
如 定义一个结构指针
CFrame:: node * lpNode;
代码中如:
if( g_frame.GetErr() == CFrame:: DEF_ERR_NOTHING )
{.....}
最后聊一下程序的3种风格。
c,带类的c,面向对象。
其中,新人应该是对面向对象比较好奇吧。但是我感觉面向对象的的几种模式并不一定就是游戏风格的首选。例如很多情况下如单体类更像是extern xxxx。因为本身的最重要的关联关系没有做什么化解。相反程序还要多做很多工(虽然也并不多)。单体类存在的最大意义就是能保证工程中有唯一的实例。
这些还是留在下次再说吧。
|
|