背景介绍
我是做 h5 游戏开发的,目前用到的技术栈是 egret 和 typescript。
之前参与了一个玩法的开发,该玩法主要包括关卡选择,关卡地图中,战斗前的布阵,战斗这四个部分。
其中战斗是走的通用的逻辑,关卡地图主要是地图中的一些事件相关的页面的开发。
原来是我带着一个新同学开发,因为有其他任务,所以我就只参与了关卡选择的一部分和战斗前的布阵这两部分的开发。
我看文档的时候没留意到伙伴数据在整个玩法中都会用到,所以就只处理了我用到的部分,新同学那边的数据处理和我这边割裂开来了,这就导致后面 QA 同学进行测试的时候发现了较多的问题。
加上离某个里程碑的日子比较近,所以就只在原来的代码上进行修改,导致代码的可读性和维护性都比较差,所以就等里程碑之后让策划同学给我提了个重构的单子,对代码进行重构。
重构过程
在玩法的 utils 中对玩法用到的数据进行统一处理,玩法中需要获取和更改伙伴数据的,都统一走 utils 的接口。
utils 中的伙伴数据除了所有伙伴的数据外,还有战斗相关的伙伴的数据和玩法相关的特殊伙伴数据,为了方便数据的管理,所有的伙伴的数据建立了 object 和 array 两种格式的数据,这样想获取某个伙伴的数据的话就可以直接从 object 中拿,array 主要是方便 list 的使用。
将玩法中用到的一些常量抽离到 utils 中,根据其含义和用途放到一个个 object 中,这样后续才不用每个地方都修改。
将之前新同学没定义私有还是公有的函数进行定义,将一些不必要的代码进行抽离或者删减,增强代码的可读性。
总结
在开发前还是得多看一下策划文档和交互文稿,要对整个玩法都有较深的了解,尽量做到在开发前想清楚开发的所有细节,并和其他一起开发的同学讨论下开发的整体思路和哪些需要注意的细节,这样才能减少后续开发过程中重复开发相同功能之类的情况。
code review 和代码规范很重要,这段时间因为比较忙,所以对我带的新同学的代码没有怎么进行 CR,而且项目相对也较新,所以代码规范也比较少,这方面后续需要加强一下。
这篇文章主要还是对这一次代码重构做一个简单的复盘,记录一下自己踩过的坑。end~