今天下午,因为一个功能,耗费了所有的时间,其实这个功能早已写好了,但是在实际调试的过程中,发现运行结果总是有问题。
开始找错,首先我怀疑的就是自己的代码,一遍又一遍地查找,修改,其实基本上代码已经成形,没什么大的错误,然后就怀疑逻辑是否出错。本地专门写了一段验证自己逻辑的代码,经测试,运行良好,貌似自己的算法逻辑并不存在问题。
问题到底出在哪里呢?因为下意识始终把错误归结为代码上,解决问题的思路就窄了很多。最后检查了程序要处理的数据,好吗!原来所有的问题都是因为数据而导致了不可预料的结果(数据是测试随便填充的,所以肯定问题多多,自己以为没多少问题),修改了数据之后,再测试程序,没问题了,松了一口气。
事后,我在想,到底是什么原因导致我浪费了这么多时间,在一个小功能模块上,这样的效率是相当低下的。
其一,在写代码之前,思考不是很充分。其实我们程序员,在没写一段代码或者完成一个功能之前,首先一定要想好怎么去做,想清楚了再去敲代码,这样的话,思路才不会乱,即使出现问题,有能比较及时的纠正。否则,给个功能,立马上手写代码,最后出问题,思路就会比较混乱。
其二,如果代码有错,语法上的一般容易解决,但是逻辑上的呢?尽早写类似的代码验证自己的逻辑算法是否正确,如果正确,那么从其他方面找突破口,而不是精力和心思继续聚焦在代码上,因为这个时候可能问题就不是代码了,最可能的原因就是要处理的数据,因为代码就是用来对数据进行处理的。
总结之,引以为戒。不怕想的时间太长,就怕在写代码的过程中思路混乱,代码反复太多,这样耗的时间会比思考的时间多出很多,还有可能解决不了问题:纠错,逻辑方面的,视野要括,不要仅仅局限于代码。