热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

怎么办_发版后报错指数级上升!代码出bug了怎么办?怎样才能少出bug?

篇首语:本文由编程笔记#小编为大家整理,主要介绍了发版后报错指数级上升!代码出bug了怎么办?怎样才能少出bug?相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了发版后报错指数级上升!代码出bug了怎么办?怎样才能少出bug?相关的知识,希望对你有一定的参考价值。






你是否有过这样的经历?周五的午后,你完成了手头的工作,边摸鱼边考虑晚上下班去哪吃饭。突然同事的一条消息把你从轻松愉悦的氛围里拽了出来:“线上出现大量报错,赶紧看看!”。

你心想:“不应该啊,明明上线前测试的很充分,怎么会出问题呢?”。带着疑惑的心情点开了报错链接,推栈显示确实是你新版本里上线的代码,报错量呈指数上升。你心里一沉,心跳开始加速,赶紧打开问题代码的仓库,排查问题原因。好在发现上线前预留了一个动态配置控制这里的逻辑,赶紧配置好回滚,联系相关同学进行发布。发布完成后不久报错量果然下降了,面红耳赤的你终于松了一口气,擦了擦额头的汗。心想:“还好上线前预留了开关,不然这次就要出大锅了”。这种场景在我工作的前几年时常发生,有时候在重大功能上线之前我还会担心的睡不着觉。不过随着处理 bug 的经验越来越多,遇到 bug 的场景反而越来越少了。

现在回想起来,自己编程能力的提升很大一部分来自处理 bug 时学到的经验。我曾经遇到过非常严重的 bug,严重到把整个开发团队辞退都不过分的那种(虽然公司并没有这么做)。那段时间顶着巨大的压力,没日没夜的工作。从紧急止损,评估影响面,到开复盘会,落实改善措施等等。虽然过程很煎熬,但是这件事之后,我发现我再遇到的 bug 真的是不值一提,再出 bug 时也总是能冷静处理。想想也很合理,跟最严重的 bug 交过手之后,你还会怕那些小 bug 吗?相信大部分程序员都不希望自己写的代码出 bug。但是 bug 往往无法避免,如何正确的处理 bug,也是成为优秀程序员的必备技能。所以我把我的经验总结下来,希望可以跟大家分享我处理 bug 的经验,以及怎样才能少出 bug。

线上出 bug 之后该怎么办?


  1. **紧急止损。**遇到 bug 的第一件事一定是紧急止损。无论是用配置开关,后端兼容,hotfix,发版本等等手段。只有先止损,对用户/公司/你自身的影响才会最小,有的人遇到 bug 之后就开始推诿塞责,敷衍了事,总想着去甩锅。遇到这种人不必跟他们扯皮,优先处理 bug,记住止损是第一位的。
  2. **确定影响面。**bug 止损或者修复之后,要尽早确定影响面。通常影响面是评估一个 bug 严重性最重要的指标,在评估影响面上要做到准确真实。不要害怕由于影响面太大而瞒报数据,坦诚面对才能让你真正的成长。
  3. **向老板汇报。**及时汇报也是非常重要的,假如你害怕老板知道之后会影响你的绩效从而没汇报的话。那你可以想象一下,如果你老板的老板知道了这个 bug,再去询问你老板的时候,他却不知道,你觉得后果会是什么?永远不要让你的老板成为最后一个知道问题发生的人。
  4. **及时复盘。**通常严重的问题会组织复盘会,详细的分析前因后果,以及规划改进措施。但是如果不是很严重的问题。你可以自己做一个小小的复盘,流程跟复盘会基本一致,最好是通过文字记录下来,防止自己下次再犯类似的问题。
  5. **落实改进措施。**改进措施里通常会有一些长期的项目,比如监控系统的完善,告警系统的推进等等。由于推动起来比较麻烦,不少措施到最后也没有落实,最终引发了更严重的 bug。如果你想做的比别人更好的话,踏踏实实的把改进措施一项一项的落实,多做一些脏活累活,你会比别人成长的快的多。

怎样才能少出bug?


  1. **自测,站在用户角度的测试。**自测一定是必须的,这是对自己代码负责任的表现。不要过度指望测试同学可以帮你测出所有bug。同时你需要切换到用户的角度进行测试,多想想假如你是一个普通用户你会怎么使用这个产品。如果你只用你写代码时的思维去进行测试,那么你很难测试出线上真实发生的路径,从而导致 bug 的发生。
  2. **从别人的 bug 中吸取经验。**不要在别人出 bug 时幸灾乐祸,别人出 bug 的时候,也是你学习的机会,你可以想象假如这段代码是你来写的话,你会犯同样的错误吗?以及你会怎么来设计代码保证不出 bug?是否可以从别人的 bug 中学习经验防止以后自己出现类似的问题?
  3. **做好动态控制与灰度控制。**这一点往往是发现 bug 之后的救命稻草。在修改线上长久稳定运行代码的时候,尽可能的预留动态控制,同时进行灰度上线,防止上线之后立刻出现大规模的 bug。
  4. **熟悉自己负责的产品。**理解产品细节,可以让你在写代码的时候结合更多的业务场景考虑,从而避免代码影响到其他业务。另外由于你足够了解业务,你能更好的评估产品经理提出的需求是否合理。往往不合理的业务需求也是产生 bug 的导火索。别低估自己理解产品的能力,你也许是最了解产品的那个人。
  5. **谨慎对待紧急需求。**通常越是紧急的需求越容易出 bug,由于思考的时间太短,评估不充分,又缺乏测试,匆忙上线之后经常会出问题。面对这种紧急需求,越要谨慎评估。即使是很小的修改,能配合动态配置的也尽量加一个配置,因为我已经遇到过不少次临时修改了一行代码导致线上出 bug 的问题,说多了都是泪。

别怕出 bug!这是你成为优秀程序员的必经之路。如果你觉得这篇文章对你有帮助的话,不妨顺手给我点个赞、评论区留言或者转发支持一下呗~ 你的每一次分享都是对创作者最好的激励~


最后

在这里还分享一份收录整理的Android学习PDF+架构视频+面试文档+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料

这些都是我现在闲暇时还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效地帮助大家掌握知识、理解原理,帮助大家在面试季取到一份不错的答卷。

当然,你也可以拿去查漏补缺,提升自身的竞争力。

有需要的话,可以直接 点击这里快速免费获取






推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 2022年的风口:你看不起的行业,真的很挣钱!
    本文介绍了2022年的风口,探讨了一份稳定的副业收入对于普通人增加收入的重要性,以及如何抓住风口来实现赚钱的目标。文章指出,拼命工作并不一定能让人有钱,而是需要顺应时代的方向。 ... [详细]
  • 求职屡屡碰壁,埋头苦学5个月斩获16000元offer,终于懂了没有人能随随便便成功
    求职屡屡碰壁,埋头苦学5个月斩获16000元offer,终于懂了没有人能随随便便成功-我以前一直认为,只要有耐心,有决心,有信心,就可以在社会上立足,干出一番事业。但是经历了社会的 ... [详细]
  • 我一直都有记录信息的习惯,不知是从什么时候开始,大约是在工作后不久。如今还真有点庆幸从那时开始记了点东西,当然是电子版的,写 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 从高级程序员到CTO的4次能力跃迁!如何选择适合的技术负责人?
    本文讲解了从高级程序员到CTO的4次能力跃迁,以及如何选择适合的技术负责人。在初创期、发展期、成熟期的每个阶段,创业公司需要不同级别的技术负责人来实现复杂功能、解决技术难题、提高交付效率和质量。高级程序员的职责是实现复杂功能、编写核心代码、处理线上bug、解决技术难题。而技术经理则需要提高交付效率和质量。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 电脑f5键是什么作用
    常见问题f5常见问题韩亚整形医院源码,vscode写前端代码,ubuntu低配,tomcat下载路径乱码,爬虫_gscu,php精粹pdf,广州快速seo优化排名,aspwap网站 ... [详细]
author-avatar
h40012222
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有