程序员奇谈之我写的程序不可能有bug篇
程序员在普通人的印象里是一份严(ku)谨(bi)的职业,也是一个被搞怪吐槽乐此不疲的职业,程序员们面对复杂的代码敲打电脑时连眉头都不会皱一下,但是有一个词却是他们痛苦的根源,它就是Bug。
有不少的新手程序员,刚开始都是从修BUG开始做起的。
修bug有助于熟悉项目,了解大概哪些类参与了执行线路,相互调用关系又是如何,结构设计上有什么特点。
以前猿姐就听过这样一个故事
有三个程序员需要穿过一片田地,到达对岸的房子。
初级程序员看了一眼笑着说道:不远,只需要十分钟就行。
资深级程序员想了一下说道:我应该在一天内过去。”菜鸟程序员很惊讶。
大神程序员看了一眼田地,说:我觉得十五分钟应该够了,资深程序员冷笑了一声。
于是,初级程序员出发了,刚走了一步就碰到了地雷,只好返回再次尝试,最好,花费了一天的时间才过去,结果却是伤痕累累。
资深程序员一出发就匍匐前进,仔细地拍打地面,寻找地雷,只有在安全的时候才前进。他在一天的时间内小心谨慎地缓慢爬过了这片地,只触发了几个地雷。
大神程序员出发之后径直穿过了田地,十分果断。他只用了十分钟就到了另一边。
“你是怎么做到的?”另外两个人问道,“那些地雷怎么没有伤到你?”
“很简单,”他回答道,“我最初就没有埋地雷。”
哈哈是不是很有意思呢
开发应用程序是一个非常有压力的工作。没有人是完美的,因此在这个行业中,代码中出现 Bug 是相当普遍的现象。
面对 Bug,一些程序员会生气,会沮丧,会心烦意乱,甚至会灰心丧气,而另一些程序员会依然保持冷静沉着。因此,如何处理修复 Bug 的过程也值得我们细细琢磨。
猿姐想分享一些程序员修复他们的源代码时所经历的想法。我相信很多开发人员和软件工程师经历过这些艰辛,然后在事后一笑而过。以下你经历过哪些?
1.“我不知道是要删除还是要重写它”
回顾从前老的源代码,会有一种想要返工写成较大块集群的冲动和诱惑。丑陋的逻辑语句,还有冗长的语法,导致代码非常难以阅读!
但话又说回来,如果代码没有坏掉的话,那就不要去修复它。这种汹涌澎拜的斗争是我经常要面对的,而且显然会困扰许多软件开发人员。
2.“对于起始框架我应该查看 Github”
我想大多数开发人员都知道 Github,上面每天都有数量惊人的开源项目发布。
任何语言的程序员都可以通过互联网借鉴现有项目,加入维基讨论,或者创建自己的代码仓库。它是各种项目所需插件和模板的超棒资源。
3.“为什么这个脚本需要这么多库?”
尤其是一些比较大众化的语言,如 Java 和 Objective-C,库的数量可能变得异常凶猛。当构建一个需要大量基础的框架时,所需的库的数量就变得显而易见得多。
即使是一些适用于 Java 的插件,也会额外需要无数的文件。有时,这会让人觉得烦杂恼人——但至少是有用的!
4.“在互联网的某个地方一定已经有了解决方案。”
我面对棘手问题的第一反应是上网查。程序员会将他们遇到的问题通过帖子发布到论坛上,然后这个问题最终得到解决并归档。
谷歌搜索问题关键字的好帮手,可以指点你往正确的讨论方向走。不幸的是,有的时候却是因为手头没有特定问题的太多信息而找不着北。
5.“有没有这个功能的插件?”
为什么要重新发明轮子?插件是扩大任何程序或网站用户界面的伟大资源。此外,它们还为开发人员提供了一些自定义和独特的选项。万一真的没有可用插件的话,为什么不自己构建一个呢?
6.“虽然网站可以工作,但我害怕 IE 浏览器。”
在 Internet Explorer 中渲染网页的历史充满了艰辛考验,是我们有目共睹或亲身体验过的。
从 5.5 版本升级到 IE9、IE10,总是需要争取到更高级浏览器的支持。Web 开发人员可能会害怕调试网页,因为在 IE6 中打开页面是一个渲染噩梦。值得庆幸的是,这样的日子正在慢慢成为过去。
7.“对于逻辑表达式而言,这似乎并不怎么合乎逻辑。”
对于 if / else 循环,for 循环,while 循环,do 循环等等,都有逻辑表达式。当浏览示例代码时,我试图指出我的逻辑是如何工作的。
NOT 运算符和比较标记的数量又是如此之多。我经常回过头去更新我自己的逻辑以便于更好地适合未来的做法。
8.“我用 30 分钟写函数,花 2 小时让它工作。”
这难道不像我们自己的编程故事吗?你正兴致勃勃地在构建着什么,但是突然之间,函数输出了一个致命的错误。
所以,现在你必须回过头去删除一些代码块,以找出错误发生的行号。当你终于找到罪魁祸首,并解决它时,虽然有种精疲力竭的感觉,但也满心安慰。
我常常会一开始就根据自己的编程思想,一头扎进去研究,但是这可能会导致麻烦,如果事情不像原先设想地那样顺利的话。
已经有很多次在我启动一个项目之后,陷入了困境,然后只好寻求博客和其他论文的支持。
最后我发现我的整个方法实际上是错误的,而且从头来过更容易!如果我开始的时候能先做一番研究的话,从长远来说,反而节省时间。
来源 https://post.mp.qq.com/kan/article/2063422179-295542592.html?_wv=2147483777&sig=ee208a49a460584bd6d97e6651f38a19&article_id=295542592&time=1552472230&_pflag=1&x5PreFetch=1
程序员奇谈之我写的程序不可能有bug篇的更多相关文章
- 从程序员的角度分析微信小程序(编程语言:用到什么学什么)
从程序员的角度分析微信小程序(编程语言:用到什么学什么) 一.总结 一句话总结:微信小程序原理就是用JS调用底层native组件,和React Native非常类似.(需要时,用到时再学) 1.选择语 ...
- MySQL常用指令,java,php程序员,数据库工程师必备。程序员小冰常用资料整理
MySQL常用指令,java,php程序员,数据库工程师必备.程序员小冰常用资料整理 MySQL常用指令(备查) 最常用的显示命令: 1.显示数据库列表. show databases; 2.显示库中 ...
- 程序员的修养 -- 如何写日志(logging)
在程序中写日志是一件非常重要,但是很容易被开发人员忽视的地方.写好程序的日志可以帮助我们大大减轻后期维护压力. 在实际的工作中,开发人员往往迫于的巨大时间压力,而写日志又是一个非常繁琐的事情,往往 ...
- 程序员的经济学系列——你不可不知的生存智慧——第一篇:小X是要成为IT精英的男人!
21世纪,不懂经济学就是耍流氓!如何才能生活得更好?作为程序员你一定也思考过这个问题.今天我们就来从经济学中寻找这问题的答案吧! 一·PPF与机会成本 1.PPF综述 首先为大家介绍第一个最简单的经济 ...
- 做10年Windows程序员与做10年Linux程序员的区别
如果一个程序员从来没有在linux,unix下开发过程序,一直在windows下面开发程序, 同样是工作10年, 大部分情况下与在linux,unix下面开发10年的程序员水平会差别很大.我写这篇文章 ...
- Coding girl一个老程序员谈到的一个女程序员的故事
因为有人说我给一个女程序员的建议不靠谱,我不服,因为我的工作经历中的一些女程序员都很不错,比那些男程序员都强,所以,我在新浪微博和twitter上征集女程序员的故事和想法,这两天来,我收到了好几封邮件 ...
- 做10年Windows程序员与做10年Linux程序员的区别(附无数评论)(开源软件相当于熟读唐诗三百首,不会作诗也会吟)
如果一个程序员从来没有在linux,unix下开发过程序,一直在windows下面开发程序, 同样是工作10年, 大部分情况下与在linux,unix下面开发10年的程序员水平会差别很大.我写这篇文章 ...
- 漫谈程序员(十一)老鸟程序员知道而新手不知道的小技巧之Web 前端篇
老鸟程序员知道而新手不知道的小技巧 Web 前端篇 常充电!程序员只有一种死法:土死的. 函数不要超过50行. 不要一次性写太多来不及测的代码,而是要写一段调试一段. UI和编码要同步做. 多写注释方 ...
- 程序员的幽默-献给所有Java程序员
1. 一程序员去面试,面试官问:“你毕业才两年,这三年工作经验是怎么来的?!”程序员答:“加班.” 2. 某程序员对书法十分感兴趣,退休后决定在这方面有所建树.于是花重金购买了上等的文房四宝.一日,饭 ...
随机推荐
- 东软实习<3>
今天学习过程和小节 主要对多线程,单例模式以及jdbc进行了一些深入着重的学习, 还有就是学习了如何使用java操作HDFS 主要是对于一些继承调用的使用等 1.封装JDBC,自定义范型 2.反射,自 ...
- Druid的简介
Druid的简介 Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBos ...
- js 格式化数字,格式化金额:
js 格式化数字,格式化金额: function number_format(number, decimals, dec_point, thousands_sep) { /* * 参数说明: * nu ...
- 微信小程序写tab切换
微信小程序之tab切换效果,如图: 最近在学习微信小程序并把之前的公司app搬到小程序上,挑一些实现效果记录一下(主要是官方文档里没说的,毕竟官方文档只是介绍功能) .wxml代码: <view ...
- 实战经验丨PHP反序列化漏洞总结
又到了金三银四跳槽季,很多小伙伴都开始为面试做准备,今天小编就给大家分享一个网安常见的面试问题:PHP反序列化漏洞. 虽然PHP反序列化漏洞利用的条件比较苛刻,但是一旦被利用就会产生很严重的后果,所以 ...
- Kali学习笔记42:SQL手工注入(4)
前三篇文章都是在讲发现SQL注入漏洞 如何查询得到所有的信息 那么另一条思路还未尝试过:能否修改数据? 例如这样: '; update users set user='yiqing' where us ...
- Asp.Net Core WebApi (Swagger+EF Core/Code First)
Swagger简介: Swagger™的目标是为REST APIs 定义一个标准的,与语言无关的接口,使人和计算机在看不到源码或者看不到文档或者不能通过网络流量检测的情况下能发现和理解各种服务的功能. ...
- Python3练习
Hello Python3 print("Hello Python!") #print("Hello, Python!"); '''a=1 b=2 c=a+b ...
- Entitiy Framework Core中使用ChangeTracker持久化实体修改历史
背景介绍 在我们的日常开发中,有时候需要记录数据库表中值的变化, 这时候我们通常会使用触发器或者使用关系型数据库中临时表(Temporal Table)或数据变更捕获(Change Data Capt ...
- ES 02 - 部署Elasticsearch单机服务 + 部署中的常见问题
目录 1 准备工作 1.1 安装JDK 1.2 下载安装包 1.3 创建elastic用户 2 启动ES服务 2.1 修改配置文件 2.2 启动服务 3 验证ES服务是否可用 4 关闭与重启服务 4. ...