Skip to content

Instantly share code, notes, and snippets.

@qyzhaojinxi
Last active August 1, 2022 11:53
Show Gist options
  • Save qyzhaojinxi/7e4e644bb4bb51ff575a to your computer and use it in GitHub Desktop.
Save qyzhaojinxi/7e4e644bb4bb51ff575a to your computer and use it in GitHub Desktop.
解决问题的思路和方法 #问题 #思路 #方法
解决问题的思路和方法
不少开发者在遇到bug或者技术难题时不能够很高效的找到解决方法,这和经验积累有关,
也和各自的思考方式、习惯有关系。当然也有很多人不存在这个问题。这里我用我有限的经验和想法,
聊一下我遇到问题时的一些思路,希望能对存在问题的各位开发者有些参考价值。看不上的可以绕走,不喜勿喷啊。
一、寻找线索
1.倒推 根据出现的场景,从下到上,逐层定位问题
2.log或者异常捕获 最直观
3.断点 对程序运行逻辑调用清晰,数据变化了然于心
4.借助工具 reval图层工具 log宏定义 动态分析内存 各种插件 终端命令(例如寻找无用的图片) postman charles等,具体问题寻找相关工具,
情况太多,不逐一而述。
二、分析问题
1.控制变量法,排除干扰
2.分析可能导致问题因素,逐一尝试(大胆设想,小心求证)
3.准确描述场景(很重要)一句两句话描述
三、解决方法
1.网络搜索
(1)找准关键词:
①关键词尽量短,但能够说明问题。
②关键词可以是选取log或者异常中关键部分。
③关键词可以有几个线索关键词组成,不同线索之前尽量用空格格开
④关键词要多次调整,根据结果增加或者去掉关键词。
(2)找准搜索引擎
①百度: 善于利用百度就能解决大部分问题了,毕竟你遇到的问题可能很多人遇到过,百度也符合国人搜索习惯。不过你得找好关键词,不然会搜索到一
大堆不相关的东西。当然,现在大多数开发者首选谷歌的。
②谷歌: 谷歌好处不多说,各种博客,问答网站相关的都能搜索到。
③http://stackoverflow.com/ 问答网站,现在已经离不开了,解决了我的大部分难题。无论是问题本身,还是顶的最高的答案,还是其他的答案评论,都
有可能是你想要的。④github和gisto上碰碰运气。
(3)有耐心,细心,链式搜索,注意只言片语。
① 很多问题是不可能一下子就被直接解决的,这个时候就要有耐心,和足够 的细心。
②搜索结果中要注意一些只言片语,或者别人给的外链。
③间接搜索,尝试搜索一些问题的前提条件,或者上一层级问题。
(4)当遇到陌生bug或者技术难题怎么快速定位解决 :把功能描述精简到一句话翻译成英文然后Google(盗取我一哥们所说).当然中文和百度也是要尝试
下的。有兴趣的去学习一下搜索引擎使用技巧。
2.请教同事
(1)不要舍近求远,同事离你很近,不妨问一下,说不定一下子就解决了,或者互相讨论研究一下换换思路也是不错的。
(2)不要局限于语言和开发环境,可以去其他开发语言同事那找找思路。当然,这种前提是你遇到的问题不是该语言或者开发环境特有的。
3.论坛或者qq群请教
①准确描述场景,这个真的很必要,有的人往往说了很多,说不到点上,一定要一两句话描述清楚。可以同时将自己的一些猜测和尝试的方案说一下。必要
的时候,提供图片,甚至是精简之后的demo。
②认真看回复。别人没有义务一定会帮你。那些肯回复你答案的,一定要认真去看,很多时候其实别人已经提供了解决方案,你看不到,只顾自己在那说,
或者自以为是的过滤掉了。
③还是stackoverflow:不妨开个问题吧,大家一块讨论下,众人拾柴火焰多,全世界那么多开发者呢。
四、保持心态和清晰思路
学学阿基米德泡个澡,或者凯库勒睡个觉,说不定你就梦到了呢。换个心情,保证思路的清晰,不然头昏脑胀的,更是解决不了问题。我自己比较笨,当年
学汉诺塔的时候没理解,就一直想着,还是没想明白,最后没心没肺地看了会儿美剧就去睡觉了,结果第二天早上竟然思路清晰,很容易就把代码写出来了。
五、开发中如何避免问题
1.需求明确,理解(最重要)
2.难点提前调研
3.功能拆分、难易程度预估、时间预估、计划制定
4.数据异常处理预判
5.及时测试,验证数据和展示
6.细心、命名规范 避免拼写错误(很重要)
7.代码注释
8.缩进和格式化代码 易于理解逻辑和定位代码
9.不要认为自己的代码没有bug
善于从bug中分析问题也是一种能力。
我这里只是提供了一个思路,没有任何具体方法,毕竟经验能力有限,虽然也遇到过不少问题,但太懒,也没有把案例都记下来,而且也不一定适用。
希望能帮助到需要帮助的人。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment