程序员在普通人的印象里是一份严(ku)谨(bi)的职业,也是一个被搞怪吐槽乐此不疲的职业,程序员们面对复杂的代码敲打电脑时连眉头都不会皱一下,但是有一个词却是他们痛苦的根源,它就是Bug。

程序员调 Bug 的感觉

就是这样的一波未平,一波又起

千万不要和程序员直接说有 Bug

面对 Bug,一些程序员会生气,会沮丧,会心烦意乱,甚至会灰心丧气,而另一些程序员会依然保持冷静沉着。因此,如何处理修复 Bug 的过程也值得我们细细琢磨。

牛 X 程序员和 Bug 之间的 PK

大雄想分享一些程序员修复他们的源代码时所经历的想法。我相信很多开发人员和软件工程师经历过这些艰辛,然后在事后一笑而过。以下小伙伴们经历过哪些?

1.“我不知道是要删除还是要重写它”

回顾从前老的源代码,会有一种想要返工写成较大块集群的冲动和诱惑。丑陋的逻辑语句,还有冗长的语法,导致代码非常难以阅读!

但话又说回来,如果代码没有坏掉的话,那就不要去修复它。这种汹涌澎拜的斗争是我经常要面对的,而且显然会困扰许多软件开发人员。

2.“为什么这个脚本需要这么多库?”

尤其是一些比较大众化的语言,如 Java 和 Objective-C,库的数量可能变得异常凶猛。当构建一个需要大量基础的框架时,所需的库的数量就变得显而易见得多。

即使是一些适用于 Java 的插件,也会额外需要无数的文件。有时,这会让人觉得烦杂恼人——但至少是有用的!

3.“有没有这个功能的插件?”

为什么要重新发明轮子?插件是扩大任何程序或网站用户界面的伟大资源。此外,它们还为开发人员提供了一些自定义和独特的选项。万一真的没有可用插件的话,为什么不自己构建一个呢?

4.“虽然网站可以工作,但我害怕 IE 浏览器。”

在 Internet Explorer 中渲染网页的历史充满了艰辛考验,是我们有目共睹或亲身体验过的。

从 5.5 版本升级到 IE9、IE10,总是需要争取到更高级浏览器的支持。Web 开发人员可能会害怕调试网页,因为在 IE6 中打开页面是一个渲染噩梦。值得庆幸的是,这样的日子正在慢慢成为过去。

我自己是一名从事了5年前端的老程序员,辞职目前在做讲师,今年年初我花了一个月整理了一份最适合2019年学习的web前端干货,从最基础的HTML+CSS+JS到移动端HTML5到各种框架都有整理,送给每一位前端小伙伴,这里是小白聚集地,欢迎初学和进阶中的小伙伴。"加学习QQ群:496517305 微信:weide3c

5.“对于逻辑表达式而言,这似乎并不怎么合乎逻辑。”

对于 if / else 循环,for 循环,while 循环,do 循环等等,都有逻辑表达式。当浏览示例代码时,我试图指出我的逻辑是如何工作的。

NOT 运算符和比较标记的数量又是如此之多。我经常回过头去更新我自己的逻辑以便于更好地适合未来的做法。

6.“我用 30 分钟写函数,花 2 小时让它工作。”

这难道不像我们自己的编程故事吗?你正兴致勃勃地在构建着什么,但是突然之间,函数输出了一个致命的错误。

所以,现在你必须回过头去删除一些代码块,以找出错误发生的行号。当你终于找到罪魁祸首,并解决它时,虽然有种精疲力竭的感觉,但也满心安慰。

我常常会一开始就根据自己的编程思想,一头扎进去研究,但是这可能会导致麻烦,如果事情不像原先设想地那样顺利的话。

已经有很多次在我启动一个项目之后,陷入了困境,然后只好寻求博客和其他论文的支持。

最后我发现我的整个方法实际上是错误的,而且从头来过更容易!如果我开始的时候能先做一番研究的话,从长远来说,反而节省时间。

8.“花费大力气才找出问题的原因是缺少了右括号。”

调试是你必须要采取的步骤,进两步,退一步。盯着代码数个小时,以为函数名或变量作用域中有哪里搞错了,最后才发现是遗漏了一个括号,这滋味,酸爽得不要不要的。所有这些时间都因为一个小小的语法错误而浪费。

9.“喝杯咖啡,休息一下!”

有时候,你只是需要站起来,远离显示器。将鼠标悬停在键盘数个小时,反而有助于打破常规。大多数健康指导都会建议我们每隔 30-60 分钟休息一会。

但是这一切都取决于你的需要,如果你觉得在程序中间休息更令人懊恼的话,那就不要中断。

10.“我应该把这个项目束之高阁,以后再来处理它。”

休息的另一个选择是离开你的项目,而不仅仅是远离你的电脑。如果还有其他工作需要做,那么不妨去做其他工作。

相对于已经花费了 5 个小时来解决问题依然不得入门而言的话,这将能更好地分配时间和资源。

11.“哦,天哪,我以前为什么不写点注释呢?”

当涉及到比较基础的前端 HTML / CSS / JS 时,我们没有必要写注释。但更复杂的脚本和程序却需要一定形式的条理组织,当你在几个月后,甚至若干年之后需要再回过头来看的话。

有时你会忘记注释函数及其参数、输出格式,和其他的必要数据。这在一段时间之后无疑会导致混乱。而且,当 Bug 开始出现时,你必须调试整个脚本来寻找解决方案。因此,要是有一些有帮助的注释就会让你获益良多。

12.“20 分钟前它还可以工作的……”

在构建程序时,可能最令人沮丧的部分就是,它从能工作到不能工作——而你没有更新代码的任何部分!我发誓这是真的,而且这是没有任何意义的事情——也许是其他程序正在运行缓存版本?

有很多次你更新了一丁点代码,却导致了整个程序崩溃出错,完全停止了工作。恢复到最近可工作的复制文件,然后从那里开始一步步前进。

13.“算了,我还是从头再开始吧。”

有时候,在你绞尽脑汁花费数个小时之后,可能要做的只是将你的工作文件移动到归档目录(或删除它们),再从头开始就可以了。但是,考虑到先前已经耗费的时间,你很难下定这个决心。

当我一筹莫展时,我往往会选择从头开始,因为这样才有可能找到完成项目

的正确道路。

为什么程序员发现不了自己的 Bug?

作为开发就和我们成人一样看到问题总是以自己的世界观来理解,导致理所当然的就这样就对了,而真正的真相就被隐藏了。

当程序员面对 Bug 的时候,如何机智甩锅?

当你面对 Bug 时,切勿慌张,以下措施教你轻松应对 Bug 带来的困扰。

1.打死不承认,这代码不是我写的,将锅甩出去。

2.睁眼说瞎话,在我电脑上是正常的呀,超级无辜。赚取同情分

3.对方使用了错误的打开方式。

一定是对方的打开方式不对,重新打开试试,我神马都不知道

4.痛斥产品经理一顿,自己偷偷改好,气势不能弱,立场要坚定,迅速进入角色,完全没有 Bug 这回事,我就是王道。

以上模式可任意切换使用,但最终都逃不了,自己背地里偷偷,改 Bug 的宿命。

— T H E E N D —

程序员你能发现自己的Bug吗?相关推荐

  1. 程序员从复杂代码中找BUG的5种方法,你用过几个?

    有不少的新手程序员,刚开始都是从修BUG开始做起的. 修bug有助于熟悉项目,了解大概哪些类参与了执行线路,相互调用关系又是如何,结构设计上有什么特点. 对于新手程序员而言,在复杂代码中找BUG是一个 ...

  2. 程序员最新研究发现【西安楼市 2011 低迷收场】

    程序员最新研究发现[西安楼市 2011 低迷收场],有些栏目名,可直接写成长尾词,但是同样不要太过,不要每个栏目名都包括关键字,这不是好现象.还有就是都知道的了,在页面的顶部,可以相对密集一点出现关键 ...

  3. 牛!月入2w,95后送外卖的程序员,送餐途中改bug

    [#95后程序员背着电脑送外卖# 随时应对甲方临时需求] 戳视频 近日,来自安徽合肥的95后张贤建,曾是一名月入两万的程序员,现在兼职做外卖员.张贤建每天送外卖时,显得特别另类,他会背着一个双肩包,包 ...

  4. 就在几天前,听说用了 YYYY-MM-dd 的程序员,都在加班改 Bug !

    来自:会点代码的大叔 大叔我北漂十多年,一直没有摇到北京的车牌,每周都需要通过一个 APP 办理"进京证",当我办理 19 年最后一次进京证的时候,APP 给出了这样的提示: 日期 ...

  5. 离职两年后,程序员遭前东家索赔:Bug 是你写的

    问:身为一名程序员,你能确保至今写的代码中没有一个 Bug 吗? 程序员:当然不能. 问:那你不怕这些 Bug 导致重大损失,然后公司起诉你吗? 程序员:哈,还有这样的事? 嗯,确实有的,甚至还发生在 ...

  6. 程序员碰到过哪些瞠目结舌的bug呢? 伪装 | 的汉字丨你是真的6!

    在这里先由小编赞叹一下汉字的博大精深伪装成字符 "|" 的汉字丨(gun)实在是让小编拍手称赞,这么优秀的程序员你是在哪找的?前端差点被你玩疯了你知道吗?哈哈!这个后端是真的秀,前 ...

  7. 那个全网下班最早的程序员,我发现了他的秘密……

    来源:了不起的程序员(ID:great_developer) ☞机器人操控电脑,华为天才少年稚晖君再出手,直呼:项目不太难! ☞阿里.腾讯基本薪资曝光,资深算法工程师24万美元,高级研究员26万美元 ...

  8. 程序员出去玩蹦迪一边修BUG?每位程序员都是斗士

    目前互联网行业发展的如火如荼,大家都知道程序员这个岗位也是个高薪岗位,但是平时程序员有多忙你知道吗,微博上一张图火了,我们可以来看下: 网友们看后纷纷表示,程序员的确是太辛苦了,随时随地都带着电脑,修 ...

  9. @程序员,终于可以放心写bug了!Facebook的debug神器你值得拥有

    作者 | 琥珀.非主流 出品 | AI科技大本营(公众号ID:rgznai100) "如果 Facebook 没有 AI,那它将失去根基."去年@Scale软件工程大会上,Face ...

最新文章

  1. iir数字滤波器_手把手教系列之一阶数字滤波器设计实现(附代码)
  2. C和指针---第六章:指针
  3. windos server 2003 邮件服务器的搭建
  4. 3451: Tyvj1953 Normal 点分治 FFT
  5. Endpoint 理解
  6. 大数据WEB阶段 使用mybatis是多值传递问题
  7. 【Blog.Core开源】将Program升级为.NET6.0版本
  8. 带有Gradle的Spring Boot Web应用程序
  9. Linux常用命令(1)
  10. 高并发环境下,6个构建缓存服务需要注意的问题
  11. WORD限制别人只能填写窗体而不能修改文档其他内容?
  12. 没有智能安防 智能家居只是一座空中楼阁
  13. 图解 Android 广播机制
  14. 1042 cant get hostname for your address
  15. 我不是来约架,我只是请他们说几句实话——QCon上海2015编程语言专题前瞻
  16. 基于SVM,KNN,CNN的数字图像识别
  17. 1.1 第一课:操作示范 [Ps教程]
  18. 不求人小白也能搭建私有云盘,焕然一新体验
  19. 数据标注下半场:PLG模式下的增长飞轮丨曼孚科技
  20. 2019牛客暑假多校训练 第四场 triples I 按位或运算

热门文章

  1. 逆向学习-UltraEdit安装
  2. 红旗Linux桌面4.1文本布置历程图解(四)
  3. Elastic Certified Engineer复习记录-复习题详解篇-索引数据(3)
  4. 学会使用交互式命令行
  5. uniapp三级地区picker选择器
  6. javaScript对象的深拷贝和浅拷贝
  7. Unity游戏源码分享-卡通填色游戏Drawing Coloring Extra Edition 1.09
  8. 全国大学生软件测试大赛Web应用大赛训练题功能测试脚本
  9. Linux +xenomai 下sendto()系统调用过程 --WT
  10. 单片机c语言孔雀开屏,测控技术与仪器专业论文.doc