程序员你能发现自己的Bug吗?
程序员在普通人的印象里是一份严(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吗?相关推荐
- 程序员从复杂代码中找BUG的5种方法,你用过几个?
有不少的新手程序员,刚开始都是从修BUG开始做起的. 修bug有助于熟悉项目,了解大概哪些类参与了执行线路,相互调用关系又是如何,结构设计上有什么特点. 对于新手程序员而言,在复杂代码中找BUG是一个 ...
- 程序员最新研究发现【西安楼市 2011 低迷收场】
程序员最新研究发现[西安楼市 2011 低迷收场],有些栏目名,可直接写成长尾词,但是同样不要太过,不要每个栏目名都包括关键字,这不是好现象.还有就是都知道的了,在页面的顶部,可以相对密集一点出现关键 ...
- 牛!月入2w,95后送外卖的程序员,送餐途中改bug
[#95后程序员背着电脑送外卖# 随时应对甲方临时需求] 戳视频 近日,来自安徽合肥的95后张贤建,曾是一名月入两万的程序员,现在兼职做外卖员.张贤建每天送外卖时,显得特别另类,他会背着一个双肩包,包 ...
- 就在几天前,听说用了 YYYY-MM-dd 的程序员,都在加班改 Bug !
来自:会点代码的大叔 大叔我北漂十多年,一直没有摇到北京的车牌,每周都需要通过一个 APP 办理"进京证",当我办理 19 年最后一次进京证的时候,APP 给出了这样的提示: 日期 ...
- 离职两年后,程序员遭前东家索赔:Bug 是你写的
问:身为一名程序员,你能确保至今写的代码中没有一个 Bug 吗? 程序员:当然不能. 问:那你不怕这些 Bug 导致重大损失,然后公司起诉你吗? 程序员:哈,还有这样的事? 嗯,确实有的,甚至还发生在 ...
- 程序员碰到过哪些瞠目结舌的bug呢? 伪装 | 的汉字丨你是真的6!
在这里先由小编赞叹一下汉字的博大精深伪装成字符 "|" 的汉字丨(gun)实在是让小编拍手称赞,这么优秀的程序员你是在哪找的?前端差点被你玩疯了你知道吗?哈哈!这个后端是真的秀,前 ...
- 那个全网下班最早的程序员,我发现了他的秘密……
来源:了不起的程序员(ID:great_developer) ☞机器人操控电脑,华为天才少年稚晖君再出手,直呼:项目不太难! ☞阿里.腾讯基本薪资曝光,资深算法工程师24万美元,高级研究员26万美元 ...
- 程序员出去玩蹦迪一边修BUG?每位程序员都是斗士
目前互联网行业发展的如火如荼,大家都知道程序员这个岗位也是个高薪岗位,但是平时程序员有多忙你知道吗,微博上一张图火了,我们可以来看下: 网友们看后纷纷表示,程序员的确是太辛苦了,随时随地都带着电脑,修 ...
- @程序员,终于可以放心写bug了!Facebook的debug神器你值得拥有
作者 | 琥珀.非主流 出品 | AI科技大本营(公众号ID:rgznai100) "如果 Facebook 没有 AI,那它将失去根基."去年@Scale软件工程大会上,Face ...
最新文章
- iir数字滤波器_手把手教系列之一阶数字滤波器设计实现(附代码)
- C和指针---第六章:指针
- windos server 2003 邮件服务器的搭建
- 3451: Tyvj1953 Normal 点分治 FFT
- Endpoint 理解
- 大数据WEB阶段 使用mybatis是多值传递问题
- 【Blog.Core开源】将Program升级为.NET6.0版本
- 带有Gradle的Spring Boot Web应用程序
- Linux常用命令(1)
- 高并发环境下,6个构建缓存服务需要注意的问题
- WORD限制别人只能填写窗体而不能修改文档其他内容?
- 没有智能安防 智能家居只是一座空中楼阁
- 图解 Android 广播机制
- 1042 cant get hostname for your address
- 我不是来约架,我只是请他们说几句实话——QCon上海2015编程语言专题前瞻
- 基于SVM,KNN,CNN的数字图像识别
- 1.1 第一课:操作示范 [Ps教程]
- 不求人小白也能搭建私有云盘,焕然一新体验
- 数据标注下半场:PLG模式下的增长飞轮丨曼孚科技
- 2019牛客暑假多校训练 第四场 triples I 按位或运算
热门文章
- 逆向学习-UltraEdit安装
- 红旗Linux桌面4.1文本布置历程图解(四)
- Elastic Certified Engineer复习记录-复习题详解篇-索引数据(3)
- 学会使用交互式命令行
- uniapp三级地区picker选择器
- javaScript对象的深拷贝和浅拷贝
- Unity游戏源码分享-卡通填色游戏Drawing Coloring Extra Edition 1.09
- 全国大学生软件测试大赛Web应用大赛训练题功能测试脚本
- Linux +xenomai 下sendto()系统调用过程 --WT
- 单片机c语言孔雀开屏,测控技术与仪器专业论文.doc