2018-02-01随笔

入行不久,一直处于学习的状态,今天写代码的时候就遇到一些小问题。
首先是做建筑升级和建造的时候,考虑的不够周到,少给升级和建造中的建筑加个状态,平时自己测的时候都是慢悠悠的输入指令,然后等待客户端接收服务端返回升级完成后的消息。今天自测的时候,客户端连着多发了几次升级请求,就出现问题了。虽然能收到队列系统返回的队列被占用中的回复,但是在指令送到队列之前,得先经过一堆逻辑判定,这些地方其实都是可以省掉的。后来给建筑多加了一个标记,表示升级中的状态。

后来测试的时候,出现了另一个问题:
2RO~7@ON6_1`(5V56(@5KBN.png

这是模拟客户端第一次收到的回复,显示我请求升级成功了,建筑升到了12级。

但是过了一会儿,又收到一条消息
image.png

怎么建筑又变成11级了,跑去数据库看了一下,已经升到12级了啊。

后面检查了一会儿,发现是自己在服务端处理客户端消息的时候,以及在升级完对建筑进行处理的时候出了问题
1.收到客户端请求的第一时间,在消息处理模块中,我就把building从建筑table里取了出来,这个时候的建筑还是11级的。然后进行升级操作。
2.然后在处理建筑升级和建造的模块中,我把建筑和升级当成了一种情况处理了(偷懒不是好习惯,想得不够细),粗暴的将升级一个建筑当作重新生成一个新的建筑,然后新建筑的等级比原来的高一级,在放入建筑table中。然后在建筑模块中把新建筑的信息推给客户端。
3.后面在消息处理模块中,组织数据格式的时候,建筑数据的来源都是第一个building的,所以后面推的那次等级才是11级。
知道原因后,后来在建筑模块中把处理方式细分一下就好了。
不过暴露了自己还是不够细心,对数据的修改和存取的对象没有充分的考虑,以后在写代码的时候,涉及到这种地方还是得多想想,别偷懒。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容