包括问题解决和问题规避两大方面。
举个例子:在公交站有清楚明白的站牌、而且有其他等车的人可以帮你解答的情况下,却非要拦住一辆2路汽车,问司机这个站过不过8路。
我是完全没法理解这种人脑子长了是有什么用处的。独立思考、独立解决,不依赖他人。要培养自己独立解决问题的能力,而不是培养别人解决问题的能力。别人帮你是情分,不帮你是本分。所以解决问题首要的原则应该是:靠自己,少烦人。
发现问题第一步应该是思考问题产生的原因,可以通过日志记录、错误信息着手。多动手,少动口,不能瞪一眼没看到问题所在就立马张嘴问别人,这不仅会使自己的能力丧失,也会浪费其他人的时间。
在开发过程中,最常见的问题就是应用崩溃。往往这类问题,很容易找到源头。
举个例子,以下是命令行报错信息:
module.js:474
throw err;
^
Error: XXX '/Users/xxx/xxx.js'
at Function.Module._resolveFilename (module.js:472:15)
at Function.Module._load (module.js:420:25)
at Module.runMain (module.js:607:10)
at run (bootstrap_node.js:420:7)
at startup (bootstrap_node.js:139:9)
at bootstrap_node.js:535:3
这是最浅显的错误信息,出错的文件位置、出错的行列号、出错的原因全部都一览无余,找出对应部分问题即可。
另外还有一些,如:
Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379
at Object.exports._errnoException (util.js:1022:11)
at exports._exceptionWithHostPort (util.js:1045:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1090:14)
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 6379
只知道错误信息,不知道具体出错位置的,也可以根据错误信息很快定位到问题。
其他一些问题,如语法问题、死循环、逻辑错误,在调试过程中很难排查,则需要耐下心来单步跳入检查。
大多数能遇见的问题都不是什么难题。即便觉得是难题也无非是经验的不足。所以,要善于利用搜索引擎,多记录,多整理,多总结。
有一些顽固问题可能会牵一发而动全身,则需要考虑成本最小化,不能捡了芝麻丢了西瓜。
另外,切忌拆东墙补西墙。要么根治,要么不治。
很多年轻人工作起来似乎从来不多加思考,不分析,也不想象,只会跟着别人的指示去做事,凭着自己的感觉去工作。结果,上次做过的事情,这次还是不会做。就像那些路盲一样,一个地方去过很多次,永远也不记得如何走。
你犯的错误,大多数都在反复,学会思考总结,避免总是在犯相同的错误。
再进一步,在思考总结的基础之上,学会举一反三,能够有效规避相似的问题。
会的多了自然错的就少了,技多不压身。
严谨是不犯错的前提。
如: