一、项目组织
1、以文件夹的形式管理你的游戏场景
通过之前的教学视频中提供的源代码,大家也可以看到,在我的代码之中,往往是一个文件夹对应一个场景,然后再在文件夹中创建对应的层。这样做的好处,在于我们可以很好的找到自己想找的文件在哪个位置,而不用在一堆文件中消耗自己的眼睛。同时,这么做还有助于我们清晰开发时的思路。
2、让你的代码像组成组成汽车的模块那样灵活
同样,通过之前教程中我的代码,大家可以很明显的看到我将各个功能都分别用一个函数封装好了,当想要使用某个功能时,就调用它;不使用时,就注释掉它。这样将一个程序分解为不同的模块,在使用中,代码的灵活性大增,也方便大家进行调试,代码的可读性也提高了很多,可谓一举多得。
二、代码风格
好的代码风格让人在阅读你的代码时心旷神怡,而不好的代码风格就很容易让人觉得食之无味了。
1、排版对齐
所谓的排版对齐,就是在为属性赋值或者给变量赋值时,尽量让中间的":"以及"="排列在一条竖线上,这样看上去比较赏心悦目,看起来也会很清晰。
2、运算符前后加上一个空格
不仅仅是运算符,在函数的定义中,变量列表中,加上一个空格也是有助于提高代码可读性的。
例如:
1
2
3
|
var sprite =
new
cc.Sprite();
ctor : function(){}
onTouchBegan : function (touch, sender){}
|
当代码没有那么紧凑时,看上去也会舒服很多。
3、属性命名方式
属性命名有多种方式,但是一个项目中所使用的命名方式应该保持同一种风格。
常见的命名方式有:
1
2
3
4
5
6
|
name1,touch1;
name_1,touch_1;
outMan,normalizedPosition,positionX;
//驼峰法
OutMan,NormalizedPosition,PositionX;
out_man,normalized_position,position_x;
Out_Man,Normalized_Position,Position_X;
|
建议使用驼峰法。
脚本语言中可能会有使用"_"前缀来表示私有变量的习惯,但是我们不建议这样做。
4、跨方法访问的属性,建议在类中做个声明,千万不要偷懒,这样可以保证类的成员清晰
5、没有跨方法访问的属性,我们一般声明为局部变量
6、关于偷懒
程序员的最高境界,copy。
对于经常使用的节点,我们可以用配置的方式将其持久化,这样可以提高我们的开发速度
7、层初始化,采用load的加载方式,如:loadMenuLayer(),loadScoreLayer()等;
而要在层中添加精灵之类的,可以采用类似的add方法添加;
而删除则可以使用delete方式(和load一样,与引擎的remove、init风格区分);
对于事件,则可以使用on开头,如onGameOver等。
这么做可以将我们的函数通过功能区分开来,起到暗示的作用,提高代码可读性。
8、一段代码实现一个功能
在代码的编写中,我们最好将一段功能相关的代码放在一起,然后用一个换行隔开不同的功能模块。
9、一个方法的实现应该不超过50行代码
10、一个方法的参数最好不要超过5个,超过5个时,最好使用配置的方式进行传递
三、注释风格
1、动词【名词】【说明】
a)根据人类的阅读习惯,我们一般会先关注这个方法的作用。例如,是加载,还是绑定,还是注册?这就是动词。
b)动词之后(假设是加载),那么我们是要加载什么?例如:加载【队友】。
c)加载之后,有可能会有一些补充说明。例如:加载【队友】【猪一样的队友】。
2、中括号还可以起到高亮的作用
当然,如果不喜欢使用中括号,我们也可以使用其他有类似作用的符号来达到相同的效果。代码可读性是判断程序员能力重要的一环。
3、没有注释的代码,才是最好的代码
试想一下,如果你的代码可以让人一眼看去就知道你所写的是什么,那么还需要注释么?说不定还会因为注释而影响了别人的阅读。所以说,如果你能让你的代码达到这种境界,你写出来的才是最好的代码。
四、资源管理
资源管理时,我们也可以使用类似项目文件管理的方式。
比如,在同一层(假设为GamePlay)下面所用到的资源,我们给它们命名时,可以给它们加上相同的前缀,例如:gp_bg.png,gp_player.png,gp_music.mp3等等。
这样做的好处,就是便于资源以场景为单位进行管理。
所以,在游戏开发中,大家最好像管理资源一样去管理自己的项目文件。这不仅是为了别人好,对自己来说,也可以有效提高自己的工作效率。