解BUG就是揭开结痂继续挤脓

Posted yunteng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解BUG就是揭开结痂继续挤脓相关的知识,希望对你有一定的参考价值。

不去cocos2d论坛反应问题估计因为我是个年龄偏大的中国开发者吧,最热血的年龄没有养成为开源社区奉献的习惯,现在就只能偷偷自嗨了。不说闲话了。

项目里用的是cocos2d-js-3.13,从官网直接下载的自定义模块单一文件。东西做的差不多了,试试能不能过closure-compiler的advanced模式,不出意外的一堆问题。排查了好久,发现是cocos2d自己内部变量被混淆的莫名其妙,cc.color的r变量能访问到,g变量访问不到,渲染出来一片红:这改起来可没完没了。我猜大概是我的单一文件版本丢失了大量的标注信息,导致closure-compiler没法正确工作。

cocos2d-js一直宣称自己是能过advance模式的,所以我决定去官网碰碰运气。

官网已经升级到了cocos2d-js-3.16,下载,里面的build.xml居然对不上号——文件名不知道是哪个版本的用的,我也不知道他们的管理是怎么做的。

折腾了一会儿,过了,的确是标注的问题,这回closure-compiler工作正确。需要说明的是,用最新版的closure-compiler(v20180101)是有一堆错误的,反正按照提示改就好了,这也表明里面一些几乎是死代码的压根就是手抖了瞎写,反正也测试不到。

接下来就是本文的正片了,我突然发现界面跳转的时候巨卡无比!换上以前的3.13,就不卡了!测了一下,某个复杂界面在iPhone6S原来需要60ms,现在需要600ms,此时一万头XX呼啸而过。

我坚定的认为,这一定只是他们某个人手抖的后遗症,然后我就开始寻找……结果最后才发现本来3.13也是巨卡的,只是有一天我调试的时候发现创建cc.LabelTTF的时候_updateTTF被不停的调用,顺手就把一行代码去掉了,一试反正也没什么问题,没想到从此就不卡了……我不经意间解了一个巨坑的BUG

罪魁祸首就是这句

CCLableTTF.js

initWithString:function() {

this._renderCmd._updateTexture();//删掉就好了

}

实际上,按照coco2d-3的设计理念,这句的确是不应该出现在初始化函数里的。只是cocos2d团队难道不做基准测试吗,作为core包里的重要组件,性能剧降都不查一查吗?渲染最基本的不就是图片加文字吗。

这事情告一段落,下面的事情才是点题的。

换上我改好的3.16,相当多的界面的文字只显示1/4,大部分都切掉了。恢复,问题解决,我X。

换上以前的3.13,也没有问题。看来3.16不知道又改了什么。

仔细观察了一下,被切掉的文字好像是文本对齐的问题,于是忽略界面配置文件中的文本对齐属性,问题解决。

结论就是3.13的版本文本对齐功能根本无效,3.16修正了这个问题,但是因为错误的调用了_updateTexture,好像也没改正。

当改正_updateTexture的问题后,正确处理了文本对齐,却让以前在错误处理的情况下填的数据的显示结果不是预期的。

想起了那句话,难得糊涂……

你可以做正确的事,但是现实却是,面对大量的存量数据,你只能错有错着。

 

 

以上是关于解BUG就是揭开结痂继续挤脓的主要内容,如果未能解决你的问题,请参考以下文章

一行代码,揭开 CPU 执行原理!

解Bug之路-ZooKeeper集群拒绝服务

requests-html库初识 + 无资料解BUG之 I/O error : encoder error,Python爬虫第30例

requests-html库初识 + 无资料解BUG之 I/O error : encoder error,Python爬虫第30例

解Bug之路-记一次存储故障的排查过程

解Bug之路-Nginx 502 Bad Gateway