各行各业,在工作过程中都会遇到问题,那解决问题的思路极其重要,以下以程序员为例(万事万物原理相通)
方法:
一、复杂事情简单化。
我们遇到的问题基本都是在各种复杂的场景中,当我们在该场景里去查问题是十分困难的,可能依赖东西非常多,依赖组件,依赖后端,依赖中间件等等,所以面对这类事务,我们最好的方法是脱离原来的环境,将复杂的事情简单化。
示例:当某个技术点在项目中出现错误, 请把该技术点,拿出来,写个简单demo, 模拟项目中的场景,保证demo流程是通的, 如果简单demo都是错的,你在项目中实验万遍依旧是错的, 浪费时间和精力,且得不到任何成效, 当抽离到项目之外,东西变得极其简单后,你可能一眼就能问题所在
二、 程序执行流程,请将复杂的事情划分成多个阶段,且为各阶段标记好执行顺序。
我们项目中遇到的问题总是非常复杂的,但是问题复杂是在于前面没规划好,如果我们将复杂事情划分多个小的事情,且标记好各个事件的依赖关系,及执行顺序,然后让每个小事情达成自己的预期,最终连在一块,那么这个复杂的事情就解决了,且后续发现问题,我们排查起来也十分方便,只要从报错的地方往前推倒,查看上阶段的事件是否正确,不正确继续往上查找。
示例: 当某个程序跑了很多阶段,但是最终结果非自己预期结果(报错了),如果你的代码杂乱无章,那么你排查问题将非常棘手, 所以你一定要保证程序代码的有序性, 程序最终错了,那我们看它前一个阶段是否是正确的,如果前阶段不对,那就再往前推一个阶段,直到找到正确的阶段,然后再查下一个阶段到底哪里出错了!
三、 我们解决的是问题本身, 所以面对复杂问题时,一定要明确问题本身,解决该问题就好,时间不允许的情况下,不要深究
我们项目中遇到的问题可能并不是总是自己写的代码造成的,也有引入的第三方库本身的问题,或者第三方插件问题
示例1: 有一个页签切换控制页面,切换页签,iframe换页面,采用库为jquery,某页面使用其submit()整体提交表单跳转到另外一个页面,这时页签切换竟然失效了,浏览器(ie11)出现报错,, 经过测试,使用原生的方法,进行点击切换无此报错,因此将切换逻辑快速用原生方法实现,解决问题。
示例2: ie下一个jquery时间插件,在有滚动条的界面,定位不准,只要滚动了,那么日期框出现的位置,就会相差一个滚动距离的位置, 此问题同样是第三方插件问题,计算不精准, 要自己去写一个日期组件显然不现实, 该日期无其他问题,只是top值计算问题,因此我们只需要找到源码中top赋值的地方,将其最终的top值获取重新计算一遍即可,问题就解决了,也无需去读懂所有源码(当然时间允许的情况下,大家多读源码有助于提升自己)
-
« 上一篇:
es6 async await 常规使用
-
原生事件代理实现
:下一篇 »