又见Bug
文章转载自「开发者圆桌」一个关于开发者入门、进阶、踩坑的微信公众号

作为一名开发者,如何解决遇到的问题、异常或Bug,是开发者必须要面对的,尽管问题很多,情况复杂,但还是有方法和技巧可寻的。
问题无非是易解决和难解决的两种,如何界定它们其实也非常简单,搜索引擎得到结果越多,表明该问题大家都遇到过,基本上按照别人的经验都是可以解决的,对于搜索结果很少的问题,表明遇到类似问题的人不多,经验也非常少,可能无法快速解决问题。
有时不能仅仅依据搜索结果的多寡来判断问题的难易,最根本的还是看能否解决你遇到的问题。如果尝试了几次都没有解决,基本上可以断定这个问题有点难度了。
对于易解决的问题基本上尝试一到二次后就可以解决掉,而对于难解决的问题,该如何解决呢?
对于复杂和难度都非常高的问题,单单依赖搜索引擎给出的结果已经无法满足解决问题的需要了。但是我们可以遵循一套流程来解决这类问题。即「解决问题基本准则:先思考,然后查找资料,最后再求助他人」。
可能大部分开发者遇到问题的第一反应就是去各种搜索引擎搜索,一个一个解决方案的尝试,可能在尝试了几次后,问题得到了最终的解决。我们不妨回头总结一下,其实有些问题非常简单,不需要反复的尝试,甚至在高可用的生产环境下不会给开发者很多尝试的机会。
问题得到解决后,大部分开发者第一感觉应该是这样的:「众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。」
为什么问题解决后都会觉得“哦哦,原来如此。”这样的感叹呢?原因是我们没有遵守上述解决问题的基本准则,导致走了很多的弯路。
独立思考
我遇到许多开发者不做任何的分析,不思考问题发生的原因,就把异常信息贴到搜索引擎里面去搜,最后搞了N次尝试还是没有解决问题。这属于盲目搜索,完全依赖搜索引擎的错误做法。
思考很重要,一方面可以确定问题的根源,另一个方面还可以帮助你使用更加合理和精准的关键字进行搜索,事半而功倍。
当然,有些非常简单的问题,可以直接去搜索,简单的问题或者大家经常遇到的问题可能在尝试一次或者二次后就解决了,对于这样的问题,搜索是可以带来效率的提高的,「对于易解决的问题建议这样做,效率非常高」。
然而,一旦有些问题进行了三次以上的尝试还是没有解决,这个时候就需要思考了,思考问题的根源,调整自己的搜索关键字甚至是思路等。
查找资料
查找资料大家都会,但是怎么去查才能有效率,才能最快解决自己的问题,大部分初中级开发者都会遇到疑惑。其实,查资料是有技巧的。
首先,要分析一下问题的根源,然后去官方文档中查找对应的资料,官方文档是最权威的,一般情况下,基本上能找到你需要的问题解决方法。
国内开发者大多受限于英文语言障碍,很少去查阅英文官方的文档,而是一味地在中文论坛,搜索中进行,错过了很多有用的关键信息。遇到英文官网不要害怕,其实就那几个单词,搞明白了就海阔天空了,实在不行就借助在线翻译功能,基本上机器能翻译一个大概,够用。
其次,使用搜索引擎,关键字很重要,因此还是要思考问题发生的根源,这样才能使用最合适的关键字进行搜索,才能有好的结果,才能进一步快速解决问题。
最后,把官方资料、搜索结果、中文论坛等多种资源集中一起,互相验证和分析,找到解决问题的最终的方案。
对了,版本。很多你遇到的Bug已经在新的版本中解决了,如果条件允许的话,不妨升级一下版本试试,「版本问题可能是大家都踩过的坑」。
求助他人
经过上面2个步骤的探索,如果还是没有能解决问题,说明这个问题可能太难或者遇到的人很少,又或者是开发者自身的知识有限无法找到合适的解决方案。
这个时候就要带着对问题的思考去求助他人,而不是一味地贴出异常信息求助,这样才能有助于问题的解决和自身技术能力的提升。
关于如何求助他人以及注意事项,可以参考我的另一篇文章「如何请教别人问题?」。
无论遇到多么难搞定的Bug或者问题,上述思路都可以发挥它的作用,有时遵循一定的问题解决流程体系或者科学的方法,是可以快速解决问题的。
又见Bug的更多相关文章
- bug管理工具之禅道的测试模块的使用
https://www.cnblogs.com/evablogs/p/6785017.html 角色:产品经理PO,项目经理PM,开发,测试 测试任务: bug: 1.维护bug视图模块:[测试]-[ ...
- 原创科幻短篇《Bug》
这回不是纯科幻,夹了点玄幻. 以下正文: 大一的时候,李双休谈了个女朋友,俩人学校相距不远,周末约一起看电影.那是李双休第一次自己坐公交,坐反了,绕城一周,电影开始后一个小时才到,就赶上看了个片尾彩蛋 ...
- C/C++ 笔试题
/////转自http://blog.csdn.net/suxinpingtao51/article/details/8015147#userconsent# 微软亚洲技术中心的面试题!!! 1.进程 ...
- 总结oninput、onchange与onpropertychange事件的用法和区别,onchange
前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框hu9i动态显示还可以输入的字数.过去一般都使用onchange/onkeyup/onkeypress/onke ...
- C/C++笔试题(很多)
微软亚洲技术中心的面试题!!! .进程和线程的差别. 线程是指进程内的一个执行单元,也是进程内的可调度实体. 与进程的区别: (1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位 (2 ...
- PHP适合做大型网站吗?
1. 对递归的不良支持 递归是一种函数调用自身的机制.这是一种强大的特性可以把某些复杂的东西变得很简单.有一个使用递归的例子是快速排序(quicksort).不幸的是,PHP并不擅长递归.Zeev,一 ...
- MySQL · 引擎特性 · InnoDB 事务子系统介绍
http://mysql.taobao.org/monthly/2015/12/01/ 前言 在前面几期关于 InnoDB Redo 和 Undo 实现的铺垫后,本节我们从上层的角度来阐述 InnoD ...
- 总结oninput、onchange与onpropertychange事件的用法和区别 书写搜索的神奇代码
总结oninput.onchange与onpropertychange事件的用法和区别 最近手机开发一个模糊搜索的功能组建,在网上就找到这篇文章! 前端页面开发的很多情况下都需要实时监听文本框输入,比 ...
- js监听input等表单输入框的变化事件oninput
js监听input等表单输入框的变化事件oninput,手机页面开发中使用到文本框textarea输入字符监听文本框变化计算还可以输入多少字符,如果使用onkeyup的话是无法监听到输入法输入的文本变 ...
随机推荐
- 2.7. 属性的各种设置选项(Core Data 应用程序实践指南)
可供配置的选项根据属性类型的不同有所变化,并不是每一种属性都能配置下列选项 Transient:勾选该选项,表示该属性不写入“持久化存储区”,这听起来很奇怪,但有时候,只需要把特性留在托管对象上下文就 ...
- CentOS-6.6下Tomcat-7.0安装与配置(Linux)
CentOS-6.6下Tomcat-7.0安装与配置(Linux) 一.认识tomcat Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目, ...
- endnote X7参考文献缩进设置
首先打开[endnote]软件,在"edit-output styles-edit(你所选择的文献格式名称)"对话框中点击"bibliography-layout&quo ...
- MyBatis 延迟加载
在sqlMapConfig中进行设置 <configuration> <settings> <!--延迟加载的总开关--> <setting name=&qu ...
- Spring MVC 返回NULL时客户端用$.getJSON的问题
如果Spring MVC返回是NULL,那么客户端的$.getJSON就不会触发: 必须返回点什么东西: 如果返回的是一个字符串,客户端的$.getJSON也不会触发:把字符串 包装成List< ...
- php之 人员的权限管理(RBAC)
1.想好权限管理的作用? 2.有什么权限内容? 3.既然有权限管理那么就会有管理员? 4.登录后每个人员的界面会是不一样的? 一.想好这个权限是什么? 就做一个就像是vip的功能,普通用户和vip用户 ...
- 通过CXF方式实现webservice服务
一.CXF的介绍 Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务的可靠基础架构.它允许创建高性能和可扩展的服务,您可以将这样的服务部署在 Tomcat 和基于 S ...
- FindPkgConfig----CMake的pkg-config模块
FindPkgConfig A pkg-config module for CMake. CMake的pkg-config模块. Finds the pkg-config executable and ...
- UE4中的集合:TSet容器
好久没有更新了,最近一直在老家过年,网络不通的,今天才有时间更新一集. 一.TSet<T>是什么 UE4中,除了TArray动态数组外,还提供了各种各样的模板容器.这一节,我们就介绍集合容 ...
- Android名片扫描识别系统SDK
Android名片扫描识别系统SDK 一.Android名片扫描识别系统应用背景 这些年,随着移动互联的发展,APP应用成爆发式的增长,在很多APP中都涉及到对名片信息的录入,如移动CRM.移动端OA ...