写代码时如何减少 Bug 的产生?
虽然今天仅仅是 1 月份的第四周,但其实今年的工作已经开始收尾了。从下周一开始,你就回发现周围的同事逐渐变少。对于大多数漂泊在一线城市的程序员来说,一年回家的次数屈指可数。所以,很多人已经归心似箭了…
扯远了,回到正题。
年底了,公司新模块开发暂时停止。所以这两天就没有开发任务,一直在调 Bug。
作为一个程序员,我是本能的反感 Bug。
代码提测时,最害怕的就是测试退回,给我反馈各种问题。
这不,这两天闲了,把之前遗留的不着急或者偶现的 Bug 都翻出来了,一个个的 Debug 调试。。。
真的是把我虐的欲仙欲死,所以才有感而发想写这篇文章。
我们到底能不能写出没有 Bug 的程序呢?
答案是:非常非常困难。
就算你的编程功力足够深,编码习惯也非常好,测试用例也很完整。但只要项目的规模稍微大一点,逻辑稍微复杂一点,会避免不了漏掉一些特殊场景或者极端情况下才出现的问题。
拿我自己举个例子吧。
最近涉及到一个网络模块的业务场景,我刚开始只考虑到了 Wifi/4G 的网络正常或断网的情景。我疏忽了 Wifi 突然断开切换成 4G 或者 4G 进入室内,自动连上 Wifi 的情况。
我在自己自测的时候,完全没有想到这个情景。自测下来很完美,一点问题都没有。
提测之后,啪啪啪打脸。
还有很多其他欠考虑的场景,我就不一一举例了,毕竟不是什么光彩的事情。
我就在想,平时编程的过程中,我们如何才能尽量减少 Bug 的产生呢?
我想到的有以下几个点:
1、正式开发前,做好准备工作。一个开发任务分配下来,不要直接上手就写。可以先在自己的小本子上画画写写,勾勒出大概的项目设计,业务难点。有没有重点需要攻克的技术,提前跟组长或技术经理报备好。这样再着手写代码,就不容易出现卡壳,影响心情,导致 Bug 的产生。
2、提前做好项目的任务规划,合理安排开发时间,减少加班的次数也能一定程度上少写一点 Bug 。毕竟有哪个程序员愿意天天加班呢?
3、开发过程中,要及时测试。不要等到全部的功能写完在一起测试,这样很容易出大问题。最好的方式就是做完一个小功能,就自己先跑起来,点点看看。及时测试,及时发现问题。早发现,早解决。
4、要重视 IDE 的报错或者警告,不要觉得能跑起来,就没问题。可能当前开发的部分还无关痛痒,但是多积累几个警告以后,可能会引发更大的问题。所以每当遇到 IDE 报错的时候,自己一定要点开看看,不要就随他去了。
5、整个功能写完以后,先自己多自测。全面的考虑使用场景,只要能想到的特殊环境都要测试一下看看,不要想着有些环境很少有人用,就不测试。往往这些场景下的漏洞,就可能引发崩溃。
6、自己平时有事没事就可以进行 Code Review。但是看自己的代码容易出现当局者迷,所以最好找个要好的同事,互相 Review 代码。省的在提交之后,被组长 Review 不通过,打回重写。。。
7、常见的 Bug 或者已经犯了几次的问题一定要记录下来,空下来的时候,经常多翻翻。好记性不如烂笔头
8、可以向资历老,技术牛的同事请教下经验,一般程序员还是乐于助人的多,不会藏着掖着。开发经验多了,避免不了遇到的Bug也会多一些。每个老师傅都会有些心得,所以需要学会向同事请教。
虽说自己现在比几年前仔细多了,但今年还是“创造”了不少 Bug … 深知自己还差得很远,需要提高和注意的地方还有很多。
自己写的 Bug ,流着泪也要改完。
好了,我继续 Debug 了。。。
写代码时如何减少 Bug 的产生?相关推荐
- 随笔 | 写代码时极有可能面临的焦虑
随笔 | 写代码时极有可能面临的焦虑 本科学管理,被诸如<市场营销学>这类课程的作业搞得焦头烂额时,就会羡慕学计算机(或更广一点如「工科」)的同学:工程问题,有绝对的标准与尺度:不像这种经 ...
- 写代码时尽量少用复制粘贴(ctrl+c, ctrl+v)
我们在写代码时经常会参考其他人编写的代码或者是从网上搜索查看需要实现的功能用那些代码,这个时候,很多人会很自然的("ctrl+c", "ctrl+v"),简单轻 ...
- 关于在写代码时如何使用绝对路径与相对路径及其简单介绍
在写代码时,我们经常需要使用到其他的一些资源,但是对于一些像我这样经常用绝对路径不用相对路径的新手菜鸟来说,看网上的那些关于绝对路径相对路径的介绍资料也有点难理解,毕竟-没试过的话确实不大能理解. 所 ...
- VSCode内用markdown写代码时出现很多段落标记的解决方案
在VSCode内用markdown写代码时,出现很多段落标记如下图所示. 开始以为是代码的问题,粘贴了很多次,不行. 把代码放在记事本里,粘贴过来,不行. 敲一段代码试试,也不行. 看来是文件本身出了 ...
- 在公司写代码时,我总想回家带娃。
桔妹导读:离天空最近的地方,是父亲的肩膀.在这个特别的日子里,小编也搜集了一些滴滴年轻的工程师奶爸们的分享,听他们聊一聊当爸的初体验.也借此机会祝福所有做了父亲的工程师们,节日快乐! 内心充满激动和紧 ...
- 小白用c++画出手枪,写代码时实属不易,请点赞加关注吧!
大家好,今天屁孩君给大家带来用c++画出手枪写代码时实属不易,请点赞加关注吧! 废话不多说,直接上代码! #include<iostream> using namespace std; i ...
- 听说,有的程序员写代码时,耳机里放的是相声
我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ...
- 抓包写代码模拟怎么减少重复劳动
由于工作需要会经常需要 Fiddler抓包 Chrome F12抓包 然后根据抓包写代码来模拟, 一般来说我都是先抓包, 打开postman把抓来的包放到postman里面模拟请求 然后利用PostM ...
- 谷歌神秘项目曝光!能写代码还会改bug的AI,让码农瑟瑟发抖
[导读]谷歌神秘项目Pitchfork曝光!这次,会有多少码农被迭代? 做一个程序员,压力有多大? 反正,最近的一个传闻,是让码农们瑟瑟发抖. 传说谷歌正在研发一个秘密的新项目,教AI写代码. 据说, ...
最新文章
- RxJava repeat,repeatWhen,repeatUntil 的区别
- wxWidgets:wxDirTraverser类用法
- HDU3939(毕达哥拉斯三元组的解)
- Linux gitpush错误,linux – GIT:无法推送(奇怪的配置问题)
- 在C#中用RX库和await来实现直观的状态机
- 智乃酱的区间乘积(前缀积+逆元)
- sklearn学习笔记之metrics
- c++中变量名和变量值
- 机器学习实验——回归预测算法
- Java优秀员工自我评价_年度优秀员工自我评价
- Windows下使用Grub4dos无损(无需格式化)制作Windows/Linux双引导U盘并引导ISO镜像
- ios13 微信提示音插件_iOS13免越狱修改微信提示音教程 iPhoneXS-11修改微信提示音教程...
- HTML制作3D樱花漫天飞舞及浪漫信封
- python 的statsmodels包,计算Wald tests
- splice,splite,slice的区别
- 分布式服务发现与注册中心 Consul 中文入门指南
- 查询oracle数据库表名和中文名
- ffmpeg中合并音频文件
- python二级考试14问(关于真正考试的时候的相关问题)
- “希希敬敬对”团队作业——敏捷冲刺6
热门文章
- 计算机编程语言排序,计算机入门必备算法——选择排序法
- Linux shell编程学习
- SAP中MIRO发票校验多采购订单选择应用
- 20155210 潘滢昊 2016-2017-2 《Java程序设计》第3周学习总结
- 关于Unity3D动态生成连续性网格几何体总结【第三部分】(贴图篇)
- 云HIS管理系统源码,SaaS模式
- json schema多种形式_如何快速写出Json Schema,校验Json Schema
- linux没权限ttl连接后,如何在没有root权限的Linux上从C中的UDP数据包中找回TTL超出的错误消息?...
- 基于随机森林的乳腺癌分类判别
- 经验分享 | 微信公众账号怎么搭建微信社区?