如何提高自身编码能力--定位bug篇

2018-04-09  本文已影响0人  大良造L
学会定位bug真的很重要

1、定位bug的数量、种类、级别越多, 真的真的真的(重要的事三遍)能快速拉升自身编码水平、对很多原理的理解和对编程的认知。
2、能提高开发效率很多很多, 避免长时间都在解决bug的路上。
3、对app也是相当友好,至少对自己的app稳定性信心大增。

“打怪升级法则”

   本人是个游戏迷,对于程序员的成长历程,觉得就像是在玩游戏一样。 只有不断的增加经验,获得新的装备,才能提高自身战斗力, 才能被一些“组织”收纳。游戏中有很多途径可以去增加经验, 同样对于程序员的成长也会有很多方式去提高自己的编程能力,这里闲谈一下定位bug的方式去提升。

  开发过程中,会出现各种bug,产生原因不一。 如果对每种类型bug都能透析产生的原因和如何避免。 就会对各个开发知识点都会有更深刻的见解。所以《打怪升级法则》最重要的一就是积累各种bug, 只有见多识广才能应对自如, 建立自己的bug库很重要, 这里会说两点如何建立自己的bug库。

法则一 : 刷自己的副本

  根据自己开发过程中所产生的bug, 包括代码类型bug,策略类型bug,业务类型bug。 每个bug都要寻根问祖找到根源, 如果只在半途解决或者屏蔽bug,那么就领会不了这个bug的精髓(至少前期积累bug库的时候都要寻根问祖,如果后面经验丰富能对bug很熟悉,或者能很优雅的屏蔽后可以忽略)

总之,一个bug就犹如一个副本,自己的副本都不刷掉,那升级就会很慢; 如果对于自己的副本只刷掉门口几个小兵,中途就离开,其实也跟没刷一样。 只有在干掉最终boss, 才会有成就感,才能拿到本副的装备, 才能以更高的战斗力去刷其他副本。 装备越来越多,越来越好,那升级就是分分钟的事情。

法则二:跟同事组队刷副本

  上面论述的是针对于自己在开发过程中遇见的bug, 这类bug实际上是很局限的, 如果你处于一个版本迭代流水线式的开发环境, 每天造轮子、造螺丝, 在开发过程中遇见的bug会更有限。除了刷掉自己的副本外, 还要学会如何吃掉别人的经验。

   当身边的同事有问题时,这时候一定要伸出援助之手(xx副本求带)。 因为除非是实习生,同等水平左右的同事发出的“求救信号” , 大部分是自己偶尔遇见过但却忘了,或者自己根本不熟悉的bug。 这是一个增加自己bug库的大好机会,即使是自己熟悉的bug,也别放过, 也许你觉得会耽误自己的时间, 但很多时候会重新刷新你对上一次bug的认识(也许会捡到+1的新装备哦),还能促进同事之间的关系。 如果是全新的bug, 之前自己并没有这方面的bug经验, 那么升级的时候就到了, 因为往往这类副本难度偏大,但boss经验多,装备豪华, 如果你能和同事组队干掉,必然会经验大涨。但对于那些难度太大,耗时很长的,也并没有要求你就此一直卡在这副本, 你只有50级的装备却想干掉100级的boss,毕竟那是你同事的bug,他会寻找资料或者更高级别的大神来解决, 此时只需等待同事的心得就好了。 当然如果你有多余的时间可以慢慢研究,收获更多。

法则三:吃别人经验

  除了自己的bug和同事的bug外, 还有很多bug是我们不熟悉的。 当自己的bug库有了一定的积累, 定位bug有了一定的经验和心得后,可以去逛逛论坛、交流群、博客等,见识见识别人的疑难杂症和解决方案, 这会有助于提高自己bug定位能力和解决能力。

  如果能有上述或类似的一些习惯,我相信用不了多久, 你们代码中的bug会越来越少,定位bug也将会轻车熟路, 个人能力会得到很大的提升。

“开局一堆bug,装备全靠刷。 我是渣渣辉,皇城pk,等你来战”

定位bug

  上面用了大量的篇幅介绍了定位bug的重要性以及如何建立一个自己的bug库,(这里说明一下, bug库并不是用笔记做成的仓库, 而是对各种bug理解认知之后的集合,如果担心被遗忘做笔记也是很好的。) 并没有介绍如何去定位一个bug的根源,与分析bug产生的原因。我相信每一个程序员都有自己的一套定位bug的方式。 这里简单介绍一下以常用思维去分析定位一个bug,当然大神很多,可用以自动化的方式去定位项目中的bug,如使用工具、脚本等方式。

猜测

当发现一个bug时,首先要做的就是分析猜测这个bug会产生的原因。

不管是什么类型的bug,当bug发生的时候,很多时候我们并不会知道这个bug是什么问题造成的,所以在猜测的时候,需要对业务类型、策略类型、代码类型的bug结合进行推理猜测。

定位

  当我们大概猜测出一个或者多个可能产生这个bug的原因后, 我们需要去定位具体产生bug的代码。由于猜测环节我们已经把范围缩小到了某一区域。 如何在这个范围定位到具体的问题代码? 这里可以提供几种思路可以参考下, 一是直接浏览一下这块代码,排查有隐患的地方。 二是模拟数据、场景、时间,确定有问题的代码。 三是折半注释法,通过折半注释能快速的定位到具体代码。 折半注释法在很多疑难杂症bug中更能见到奇效,通过注释掉一部分代码,让产生bug所处的局部功能运行正常, 再放开被注释掉的一半代码,使运行正常,直至找到最终打开注释就会有问题的那块代码。 或者反注释,一个个打开注释判断是否正常,最后留下的将会是有问题的代码, 此类方法只能做辅助。

验证

验证就很简单了,定位到具体问题代码后,我们需要验证各种数据、场景、时机来完全确定是这里代码产生的问题。

猜测 - 定位

有些时候从猜想 - 定位 - 验证, 最后可能会发现并不是这里的产生的问题, 这时候需要重新去猜想和定位其他case。

其他方式

定位bug的方式有很多,也根据具体情况而定,只要积累的够多, 不管用什么方式去定位都将会很快, 很多时候也许一个感觉就对了。 不管是建立bug库,还是学会如何定位bug, 都是一个持续的积累过程,也是一种不可言传的编程思维,这里只是简单的描述大家都懂的道理,只有自己去体会实践才能收获。

上一篇下一篇

猜你喜欢

热点阅读