做Android开发不知不觉已经六年多了,从一个一窍不通的小白到现在能够独当一面的老鸟,其中经历不少的坑,以前总是不断百度、询求他人的帮助来解决问题,到现在越来越觉得,其实解决问题的方式有很多种,最重要的是通过自己的不断实践,不断总结,快速定位问题、解决问题,形成自己解决问题的一种方式、方法,从而让自己得到提升。

 
不知道大家怎么看待一个棘手的问题啊,我以前碰到这种问题很难受、很着急,总想通过百度、问别人来解决,后面发现其实这种想法根本没有用,自己的问题,别人没有义务帮你解决,百度到的东西,跟你想要的效果总是不一样,后来当我解决问题越来越多的时候,发现,其实问题没有你想象的那么难,换一种想法,其实这个问题如果你解决,对自己是个提升,自己的自信也是个提升,以后遇到问题就没有那种畏难情绪,及时最后没有解决,对自己来说也是一种锻炼。言归正传,下面谈谈我在工作遇到的一些问题,以及对这些问题的处理方式。

  1.快速定位问题

 
我们常常在工作中,遇到一些问题,比如我感觉,写的代码明明没有问题(不用想,就是有问题),怎么就会出现那种你不想要的结果呢。这种就适合那种必现问题,或者高概率偶现问题(其实也是必现的,只是没有找到必现路径而已),出现的情况就是参数返回的值不对、显示的效果不对等。这种问题最简单的方式就是查看赋值和调用的地方,因为出现这种情况,就是在你想不到的地方,方法多调用了一次、或者多写了一次值。我一般遇到这种问题,就是在你赋值、调用的地方,都打印一些日志,或者在读取和写入的地方debug,一般问题原因就会找到,从而解决。

 
偶现问题,出现概率比较低问题解决,这一块,我遇到的挺多的,我现在的工作车机上面开发,手机上可能没有问题,跑到车机上面就有问题,往往这种问题就是看代码,看不出问题。这样的问题,就需要我们把代码分析一下,review一下,可能出现问题的地方加点日志,尝试复现,这种问题很多时候,就是某个方法、参数、调用时机、条件不对造成的,我遇到这种问题解决方法就是,我将我认为错误的地方,加上错误代码,看问题能不能复现,如果复现,很有可能就是这里的原因。比如我们会遇到一种,方法明明调用了,debug也走进去就是不生效,问题其实不是我们认为的这个原因,最后发现是别的地方出错了(比如非UI线程调用了刷新UI的方法)。

 
UI显示问题,比如我写的某个布局,为啥就是不对,这个很多时候,某些参数设置不对,其他布局影响,不要忽视哪些margeStart之类属性也可能影响的当前的布局,这类问题很多时候,往往是某些属性设置不对,最好的方式是,写成一个固定的值、特别大的值,看有没有效果,这样就能定位问题的原因。

  2.最容易忽略的地方

 
我们常常解决问题的时候,往往最容易忽略的地方,首先是必须基于我们的源码,首先要分析一下,有没有问题,逻辑合不合理,把代码捋一捋(很多时候开发项目的时候,往往是几个人一起开发,代码可能不是自己写的,首先就是把别人代码看懂,才能解决问题),然后再去分析问题,日志特别是错误日志信息(主要是指那些不是很明显不是error级别的错误日志),我们常常会加TAG,过滤一下日志,但是有些错误日志可能捕获了,我们没有注意往往错过,其实问题就出在哪里,错误的日志一定仔细分析,往往问题所在,容易忽略。

  3.遇到棘手的问题怎么办

  第一、心态放好,静下心来解决问题,不好解决的问题,不要想着一下解决掉,降低自己的心里预期。

  第二、分配的工作肯定是有时间限制的,不要在某一种方案花费太多时间,要合理利用时间。

 
第三、基于目前的条件,找出最适合的方案,比如做某个需求,时间紧,首先,你要做的是,在网上找一下有没有类似的资料、轮子,越简单越好,因为后续肯定要改的,太复杂自己搞懂它都费时间。

第四、一定不要想着一触而就,慢慢来,分步解决,最主要的是要有效果,比如是问题,你必须把问题分析清楚,将你的做的努力,尝试解决的方式,准备好,老板问你,你也能告诉他,需求的话,最简单的效果一定要做出来,即使有问题,要不能你根本做不出这个需求。(有方案后才能顺着这个方案去解决问题)。

  第五、相信自己一定能解决,分析代码,查看日志,用最原始的方式解决问题,最后一定能迎刃而解。

 
说说自己再开发一个IOS项目遇到的问题,我再做一个需求就是一个控件在旋转后,拉伸、移动view能正常操作,原本以为旋转完直接调用原来的方法就行,后面发现会出现问题,最开始想着能不能在网上找到类似的方案解决,后面发现不行,没有,有也和想要的不一样,没办法,只能硬着头皮上,首先分析问题,把没有用的代码注释掉,留下最简单的,拉伸,里面很多逻辑去掉,就留下一个基本的拉伸view方法,尝试一下,可以,发现新的问题,解决,然后想着要保存然后还原,最后想到一种方式,记录旋转前的坐标、大小,然后旋转还原,然后有各种思考如何坐标转换呢,就这样一步一步尝试、出现新的问题,解决问题,一点一点的实现,直至完成。把这个弄完后,我发现其实问题就是靠着一点一点尝试、解决实现的,一定要大胆尝试,规律可能一开始不明显,一点一点做下去,越来越事情明朗了。一定要大胆尝试,化繁为简。

  总结一下,遇到问题心态要好,多多总结、反思,定位问题,调用、赋值地方最重要,出现问题要大胆尝试,抽象转具体,错误日志不能忽略,立足当前代码,解决问题。

  以上纯属个人开发经验总结,有好的经验也可以评论分享一下,谢谢阅读。

 

技术
©2019-2020 Toolsou All rights reserved,
Redis 计数器 高并发的应用pytorch之ResNet18(对cifar10数据进行分类准确度达到94%)在Vue中使用Web Worker函数基本定义和使用‘未完待续 如何建设数据安全体系?最优化方法总结:公式解、数值优化、求解思想c++内存 指针越界检测机制_CrtMemBlockHeadePython垃圾回收与内存泄露蚂蚁集团香港IPO获得中国证监会批准Keras保存与加载模型(JSON+HDF5)