小游戏重构之路
小游戏重构之路
- 记录一下重构小游戏过程中的体会。
- 重构开发语言 Golang,额外涉及开发语言PHP,C++
前景
- 接手小游戏重构有骰宝、大菠萝、夺宝奇兵,虽然各种原因没有上线,或上线验证后出现问题暂停上线状态。
- 轻量支撑服务有小喇叭、大厅代理层,已上线正常使用。
- 只是服务端部分重构。
场景
重构缘由
- 服务老化,维护成本大。稳定的项目没人愿意去调整,大部分时间就处理搁置状态了,只是个别时候在需要加点东西的时候就麻烦来了。可能这个项目的核心用了好几年前的一个技术,如 swoole 1.8.x 版本,某些时间要解决问题只能使用绝招“重启大法”。能用可用,但难以维护这样的状态。
- 折腾心理。某些时候需求不饱和前提下,就闲得慌蛋疼,想整点东西,而能为现有项目提供价值是更好了。
- 学习目的。站在巨人肩膀上可望得更远,虽然攀登过程需要披荆斩棘。
开发语言
- 做为PHP出身的程序员难免不想囚困于web领域。
- Golang 能让我体会到开发过程中的轻松感。
- 大部分时间都处于自撸项目,所以不需要见识千奇百怪的代码风格,毕竟项目的复杂度就是因人而生。有人的地方就有江湖!!!
- 自知 C++ 只能读出思路的程度。
历程
读
因为不是从0到1,所以必须基于原有的套路上进行,毕竟纯粹的服务端重构,需要保证与客户端的数据一致性。
整个历程里面这部分是最难受的,项目一般年久失修,可能仅有原有源码。这部分也是最耗时的,虽然有的服务眼看是只有几个功能如下注、结算、发奖,但数据是不会撒谎,数据有出入那结果就异常。
最重要的是需要一颗包容的心,骂x多了难免麻木。话虽如此,意仍难平,江湖如此,身不由已!
写
Golang 的优势就是轻量,不用像 PHP 那样凡事先搬出个框架,不过服务写得多了也会自成框架。框架模型元素大体整理有
- 入口,服务端、客户端等。
- 功能模块,日志、配置、指标、DB、缓存、基于自有协议服务客户端如用户、上报等。
- 业务逻辑,路由控制,具体实现。
- 脚本,编译、发布等
试
不喜欢等所有东西都实现了才进行测试,没那耐心,一般测试难免存在遗漏,亡羊补牢即使能管用但肯定会痛苦。拆分化开发和测试,有坑早点填,也趁早安心。
此外,重构都是换语言进行,不同语言开发思路差异化还是很大的。如果进行直翻,那简直就是种了棵树苗在心口,一时间不起眼就吸引掉所有阳光,眼望它在那灿烂。
问题
语言
换语言重构最大问题就在于尽可能的使用适合的方式,Go、PHP、C++ 三个不必进行比较,道路千万条,适合了才会舒服。
Go
小游戏基本上数据都是有状态的,当 goroutine 不受约束,惊喜就会不期而至,必须心怀敬畏啊。
意义
Read other posts