开发设计心得(关于改bug的心得)

一转眼,半年过去了,半年前,还是一个连http请求,handler怎么用都不太会的标准菜鸟(当然,现在也是菜鸟)。

才来公司的时候,老大交给我一个老项目让我改bug。那一改就是3个月,三个月的时间,边开发新功能,变修复原有bug。说实话,一来就是一个class有上千行代码,一个包几十个类的项目,看着都头疼。连出现bug的位置都要找半天。具体哪些bug,已经不太记得了,只是把一些经验性的东西,总结出来分享。

改bug的几个阶段(场景),我来聊聊吧(也是自己改bug的阶段,每个阶段改的方式,方向可能都有 不同):

第一个阶段:最基础的阶段,看日志。这种,就是那种错误明显的,直接点日志,跳到对应位置那种。比如空指针,改的方法就是看哪个值为空了,再看看这个类,什么时候赋值了呀什么的。修改难度,应该算最小的。

第二个阶段(场景):也有日志,但是,你点击日志跳到对应位置,发现(卧槽,这代码不是我写的,是Android自己写的),然后,就纠结,这tm什么问题呀,都不是我写的,怎么搞呀。经过一番思来想去之后,决定,百度一下吧,把这段错误信息放到网上一查,诶,有结果了。然后按照网上说的那样,改改改,行了。

第三个阶段(场景):还是有日志,但是,没有可以点击的日志,全是一啪啦英文,靠,这什么鬼,完全没思路呀。然后,又是纠结,沉思,最后实在没办法了,读日志吧,一句句读,最后终于读懂什么意思了,然后,又把错误内容加上自己的理解百度一下,再不行就在it群里面问,最后,也解决了。

第四个阶段(场景):我×,没有报错,没有蹦,没有日志,这tm怎么就跟我想的不一样呀。这个时候,只能去读代码了,看自己这个模块的代码是哪些,哪一步是应该显示我那个正确结果的,然后,一步一步往上推,看数据从哪里来,走了哪些步奏,看view哪里创建,又在哪里显示。然后打断点,单步调试,最后发现,原来是这一步没有传值(或者取值错了什么的)。

第五个阶段(场景):这类场景比较复杂了,这类场景就是,我一个类很大(几千行代码那种),然后,引用了10几个类(可能更多)。在这个类里面某句话出了问题,或是怎么样。这种情况千万不要,一上去,就改,因为,很有可能(反正,我是百分之百)会这个bug改了,又出现新的bug了。这种情况最正确的做法是,先把这部分内容读懂,弄明白是干什么的,最好是能重构一下。让整体结构和思路变清晰,然后,再去找问题的根源。

第六个阶段(我现在的阶段):基本问题,秒改,复杂问题,先重构再改。

ok,最后总结一些经验性的话吧,遇到问题的几个处理步奏:1找现场,还原现场。2向上溯源,向下延伸。3累积

第一点:找现场,还原现场。说的是。先找到这个问题,这个场景,出现的地方(包,类,代码块),其实就和警察办案一样,先到案发现场找线索,因为案发之后一定会留下蛛丝马迹。然后,就是还原现场,就是把这个问题复现,就想警察会还原案发现场一样,帮助推理,和理清线索。

第二点:向上溯源,向下延伸:找到现场之后,分析这个问题,数据源是哪里,传来的数据是什么,向下延伸,是指,考虑这个对象,对他后续的对象(比如谁引用了他)有什么影响。简单来说,就是。向上溯源,是为了解决当前这个问题,向下延伸,是规避制造新的bug。也可以换一种说法,叫依赖。相信搞java的同学对这个词理解应该会很深。

第三点:累积,其实就是累积经验,我现在之所以能秒改一些问题,就是因为,曾经一天要改10几个bug,改了3个月。见都见了很多bug了,看着就不陌生了,就好办了。所以,遇到bug,不要着急,改一个,就进步一点。

还有千万不要以为改bug,不如写项目。这么说吧,我改的bug,比我写的项目还多(真是多亏了之前的哥们,给我留了那么多bug,别让我遇到,遇到打死)。改着改着,就发现,这样写容易产生bug,该怎样怎样写,才能避免bug。比如一个eventbus,容易忘记反注册。后来,就写了一个生命周期框架,让activity自己去管理,我不管了。比如一些规则验证不写容易出现奇葩bug,然后就写了一个规则验证的api,用着很爽。也是多亏了之前累积的bug,这次我写的项目,大家都加班了,就我几乎没加班,然后写出来之后,基本上没什么bug,测试也通过主流程,只是改一些小细节了。所以才有这时间写这篇文章。

最后分享一点,作为一个程序员(虽然我现在,已经在渐渐负责框架,架构方面的设计),编码才是硬本事,写出来的代码bug越少,代码越少,性能越高,扩展性越好才是能证明你的水平。别一来就是xx模式,xx架构,xx框架的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355

推荐阅读更多精彩内容