每次开发完一个功能后,总发现有很多可以改进的地方,但下次开发还是会犯同样的错误,这次决定记录一下可以改进的地方,以便下次不要在犯同样的错误。
1:排期估算错误,评估开发时间过于乐观。以为只是改改UI,加十几个动画,结果整个UI都被重写了,重写意味着要熟悉原来的需求,要读通原有代码的逻辑,虽然我对整体需求比较了解,但UI那块的代码之前尝试去读过,就是觉得晕(动画都是直接上原装定时器,没有任何包装,而且到处都是)。重写完后,除了保留了原有的框架外,其他的代码都被删除重写了。虽然按时完成了开发任务,但测试阶段BUG是一堆一堆的,当同事问我BUG为什么这么多的时候,我竟无言以对。现在看来重写的决定是对的,不然一堆不知道啥原因的BUG会让我疯掉。重写后,我知道了所有的需求及实现细节,代码也是我自己的了,出了问题,也好排查解决。
2理清思路才能解决问题。有两个偶现的BUG,就是怎么都解决不了,各种修改都不行,这个功能以前就是我自己实现的,现在只是改UI,加动画,最后实在没办法,只好重新理了一下思路,发现mouse_hover、mouse_leave、delete、add和动画搅在一起,代码也很混乱,在改下去,问题不一定能解决,而且感觉要失控的样子,在理清思路后,把这个功能又给重写了,结果两个BUG顺利的解决了。
3没想清楚的地方都变成了BUG。没错,哥的BUG就是多(请容许我先去哭一个小时)。在开发的时候,经常是想了一个大概,感觉可行,就开始写代码,写完后,编译运行,得到了想要的结果,感觉没什么问题,就开始开发下一个功能(开发任务重啊,必须得速度),然后这个功能就这样提测了,然后测试就给你提了几个BUG,然后你的BUG数量很提神。虽然我们很难把任何事情都考虑得很清楚,但是你明知道可能有疑问的地方就一定要想清楚,不要存侥幸心理,因为不翔的预感告诉我们,虽然这一会儿拉不出翔,但一定是会拉出来滴,到时候你就等着吃吧。
4四面楚歌的时候,谁离我最近我就干掉谁,谁最容易干掉就最先干掉谁。BUG还有20多个,我正焦头烂额的改BUG,测试发来消息说这个是不是BUG,要我解释一下;我正跟测试解释的时候,产品经理经理过来说要改一个“小需求”;设计过来说要改UI细节;客服发来消息,这个遗留BUG什么时候解,已经有很多用户反馈了这个问题。我的血压感觉一下子就上去了,你们别拦着我,我要去吃药,医生说:药、不、能、停。虽然有点夸张,但有时候真的是被搞得焦头烂额。兵来将挡水来土掩,问题还是得解决,谁叫咋是程序员呢。只好给这些任务分一个优先级,容易解决的就马上解决了,紧急的问题先解决,留着只会让问题看起来越来越多,加大自己的压力,问题多也容易遗漏,不能马上解决的,一定要做好记录,因为这些翔都是属于你的,你要把他吃干净。
5求助是解决问题最快的方法。求助总让人觉得有点那啥,一般都是不到万不得已,不会向别人求助的,但有时自己钻进牛角尖,在向别人求助时,描述问题的时候,其实也是一个理清思路的过程,说不定说着说着,就灵光乍现,找到问题的解决方案了。还有就是有些方面的确是别人更熟悉一些,需要掌握一些知识点,你不知道就解决不了,知道就分分钟解决问题,这个时候就应该虚心向别人请教,不要不好意思向别人求助,但不要养成习惯。
6储备好知识在出发。百度卫士5.0这个版本界面很炫,加了很多动画,我自己就要实现十几个动画,问题是我之前没有玩过动画啊,我根本就不知道实现一个动画要多长时间,对自己能不能实现也没底,排期都是有经验的同事给我排的。在开发之前,我先看了一个类似动画的例子,感觉还行,但是我这十几个动画,各式各样,很多都没例子可抄。于是花了大约1天的时间,来看皮肤引擎动画相关的源码,源码之内了无秘密,看了源码之后,发现写动画还是很简单的,其实就是通过定时器隔一段时间设置一下控件的属性。1秒钟24帧人眼看到的就是动画的效果了。当我明白动画的实现原理后,在写起动画来就得心应手了。
7给你的代码加上日志。有时候忘了给代码加日志,出了问题不知道怎么排查,就很后悔自己当时没有加日志,有些问题看日志就很好解决,没日志就没有头绪,感觉没有问题啊,但问题就是活生生的摆在你眼前,让你因为没有加日志而后悔莫及。
8不要总是去猜,要去论证。这条主要是针对我自己,因为我已经猜出了习惯,猜出了风格。总是靠猜去解决问题也不是办法。虽然很多时候都被我猜对了,但猜错了的问题怎么解?有些偶现的BUG,你以为是XX原因,然后做了修改,以为解决,其实并没有解决。遇到问题还是得去定位去分析解决。
9写结构清晰易懂的代码。这点虽然难做到,但必须追求。你是否曾经有这样的感受:昨天写的代码,今天来看就完全不认识了,还以为不是自己写的代码,不然自己写的东西自己怎么会看不懂?这种现象可能是写的时候灵光乍现,写出了神级代码,一般人看不懂,今天作为一般人还真就看不懂了,所以在写出神级代码的时候,一定要加注释说明神级代码是怎么来的。还有一种情况就是代码被写成狗屎了,真是看不懂,大多数情况可能就是这样,自己的翔从来都是自己吃的,为了让自己少吃点翔,将代码写好一点。清晰的思路和结构清晰的代码都让人舒服,会有被电到的感觉,混乱的思路和结构混乱的代码总让人觉得不适,有种恶心的感觉。
10速度还是效率。《唐伯虎点秋香》里有一段对白,大概是这样:给我追华府的官船|公子,你真有眼光,我可是出了名的快|大哥你的船在下沉啊|沉也沉得快吗。开发排期总是很紧,于是我们的开发速度都很快,然后就产生了很多BUG,然后又花和开发差不多一样的时间来修BUG,如果我们在开发的时候能够把代码写好点,多用点时间一次就把事情做好,效果会不会好一点。我不知道,但是对自己能力的提高肯定大于前者,一次将事情做好,本就是一种很强的能力,而且我觉得这种能力是可以训练的,当你以这种方式去开发的时候,就是一直在训练这种能力。在高考的时候,我旁边就坐着全年级第一的家伙,在考数学的时候,从第一题做到最后一题,都没有将试卷翻过来,除了最后一题没做完,其他的都全对。在要交卷的时候,终于将试卷翻过来了,哥一眼看到最后两个选择题的答案和哥的不一样,哥硬是没有改自己的答案,最后活生生的将自己考成了一个专科生,至今还为自己当时的决定感动不已。