在最近的一周,我维护的业务系统出现了不少坏毛病,一周七天crash掉了4次,每次都须要都是由于一点很小的问题,触发了蝴蝶效应,致使整个系统全盘崩溃,因而产生除了叙述本篇的想法,固然这并非为了掩盖我在Coding上的一些细节处理和职责疏忽,只是为了从根本的细节上去分析这些问题。程序员
首先咱们须要尝试理解一下什么Bug?数据库
关于bug的解释ide
bug 是指任何计算机程序或硬件系统中的错误,故障或缺陷。错误会产生意外结果或致使系统意外运行
简单来讲:bug就是程序出了问题,产生了意外的结果,没有按照预期的结果去运行。函数
产生Bug的缘由有不少种:工具
以上缘由总结,主观和客观因素都会影响到Bug的产生,正如偏差不可避免通常,咱们应该对本身写出的代码进行测试、分析、"沟通".学习
鉴于以上bug产出的缘由,咱们能够经过这些一些对策来避免Bug的产生,下面是一些常见缘由分析和处理对策。测试
1.开发者水平过低this
在进行系统的构建中,部分开发者可能一般由于开发经验过少,或者语言不熟悉,会编写错误的代码,而后未通过代码测试和审计,便进行提交和上线操做,致使了异常的引起编码
解决方案:spa
2.不一样的编译及运行环境
由于业务的拓展和服务支持,须要部署多个不一样的运行环境中,如:转帐系统,你在测试环境中转帐了1000元给用户小明,小明却在生产环境中收到了这1000元,并成功进行提现,每每由于没有环境判断,致使了失误的操做!
解决方案:
1.在代码中多进行注释说明,标明哪些函数会在其余环境中操做和运行
2.增强环境逻辑判断
如下是我在使用的一些标注和说明,其余开发者或我本人再次阅览该代码时,就会获得一个清晰的运行结果.
/** * 执行该函数时,会根据env环境进行处理,详细以下 * prod(生产环境):会启动队列对视频进行转码、截图、写入到生产数据库中操做. * staging(预演环境):不会启动队列,但会写入staging数据库中 * test(测试环境):会启动队列对视频进行转码、截图、写入到测试数据库中操做. */ $video = $this->uploadVideo($file); $queue = $this->videoQueue($video);
3.与需求方沟通不到位
这是常常程序员与产品对撕的一个很重要缘由,TA想要A,而你却作出了B,因而大家产生了很大的争论
解决方案:
4.马虎大意、考虑不周
编码时觉得问题很小,修改代码,不走调试与测试流程,直接上线.
解决方案:
5.放飞自我,Coding全靠自嗨
解决方案:
无
这类朋友不适合作开发者,适合去作创造者!
6.选择了错误的或者运行不稳定的第三方库
有时候为了省略接入时间,每每会忽略掉一些大型库,由于业务的支持只用到了一小部分,因此咱们有时候会去选择一些mini库,最后因为不稳定或方案不成熟,出现错误的运行结果
解决方案:
“橡皮鸭调试法”是我在阅读《编写可读代码》一书中看到的一个技巧,我在一我的开发的时候会使用这个技巧,我认为是一个不错的选择.
咱们为何会编写BUG,若是没有BUG?开发和测试不就失业了吗?固然这只是一句玩笑话。
在此引用知乎上一句颇有意思的话.
编码也亦如此,由于不少主观和客观的因素,致使程序执行了错误的逻辑,产生了不如预期的结果,做为一个合格的开发人员,咱们应该尽力确保程序稳妥运行,减小失误和异常。
正如CZG提到的"你写的每一行代码,都是你的名片",咱们每一个人都义务去维护好这张名片,让其余人对这张名片充满敬畏之心,而不是"what shit code",诸君共勉!