72

程序员们,曾经是否有个bug让你开始怀疑人生

 5 years ago
source link: http://www.10tiao.com/html/274/201807/2650578164/1.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

相信程序员们都有一个共同的女朋友。这个女朋友总是阴魂不散,时不时还不忘调戏下男朋友程序员,而且你依然对她欲罢不能、想入非非。

不瞒大家,最近这个女朋友找上俺了。她就是StringIndexOutOfBoundsException:

优秀的程序员们一看就知道,你这是越界问题啊!还有的可能是工具类问题、逻辑问题、字符串截取,索引越界等等,说实话都对。然而 ,问题到现在仍然没解决掉;什么回事?先简单说下bug的由来,那是6月2号的上午11点钟左右,依稀记得当时是在写RecyclerView上拉加载和修改数据对应的数组位置,(时间有些长了,记得不是很清楚),写完马上弹出bug,时间已经到12点就没有当时解决,出去吃饭了,想的是先吃饭下午回来再解决。哪知道下午回来之后就解决不了,正好当天下午要搬家,回来简单百度查阅资料,有个前辈博客说那是越界问题,因为你获取的数据大于数组本身的长度大小而抛出异常,例如,String.length()<10;而你又要取index>=10的字符。心想,这个bug情况似乎有些不一样!修改数据对应的数组位置,在之前也改过几次,而且没有问题,且这个数组是集合数组List [] msgSt;我只是修改了数组的位置【0】。

if (msgSt!=null) {
    nowList.clear();//清空缓存
    for (int i = 0; i < nowNum; i++) {
        nowList.add(msgSt[0].get(i));
    }
}

那好,我们看第二中情况,当时不是在写RecyclerView上拉加载吗,搬好家之后,我把相关的代码注释掉,重新运行,问题依旧。情绪开始失控,接下来几天,又把一部分代码注释掉,开始进行排查,发现一个问题,在程序运行到报错那行就崩溃,后面的代码没法排查,注释也没有用。后来,重新又梳理一遍,思索,这个情况不太像网上大牛们说的那样越界的问题,首先能确定的是,逻辑代码没有问题,索引也没有问题,在bug出现之前是可以运行起来的,bug出现最大可能是后面新增的代码功能有误引起异常,最让人头疼的是,报错行代码没有问题,问题出现在其他地方,程序运行到报错行,后面代码没有执行,无法进行Debug调试。

排查几日无果,情绪越来越不好,开始胡思乱想,为了逃避问题而选择玩游戏;在游戏里并不得到解脱,常常匹配到坑爹队友,情绪反而更加低落,破口骂人少不了,浪费时间不说,除了口出狂言,出言不敬之外束手无策,情绪下的言语和行动只不过是证明自己的弱小、证明自己没有办法解决问题而已。

这让我想到了习得性无助。如果你每次去上高数课都发现自己什么都听不懂,每次做高数作业都像是看天书一样,那么你还愿意去上高数课吗?你还愿意去做高数作业吗?这种经历了挫折和失败之后,面对问题时无能为力的心理状态和行为就是习得性无助。习得性无助的人们往往不能给自己确立恰当的目标,遇到困难时容易自暴自弃,他们对于失败的恐惧远远大于对成功的渴望。他们不相信自己能够按照指定水平来执行某个行动,即自我效能感低,面对需要高质量完成的任务时他们有经常很强的焦虑感。期末考试时朋友圈流行的“我可能有一个假脑子”系列表情包便是低自我效能感的一种体现。

话说今年的一期一会的谷歌大会,真的不把咱们程序员当人看啊!说什么人工智能、VR也就算了,居然在本次大会宣布 Kotlin成为Android 开发的1级编程语言,更好笑的是,你谷歌跟人家甲骨文公司干架就算了,居然搞个Kotlin编程语言还和Java互通。。。。。等等,谷歌干什么咱管不着,想想自己又要从零开始,又要多学一门语言,大写的尴尬啊!

未来的世界变化不仅会变化得越来越快,估计还会让人丧心病狂。生活不都这样吗?

本来改变就不易,我想现在的人们对未来更多的不是满怀信心、满怀希望,更多的是担忧吧!不敢说别的,估计上个厕所都能错过一个亿!你觉得这个很恐怖吗?不不不不~~,人家王思聪他爸一个小目标就是一个亿。人类就是一个自作孽的物种,为咋这么说?咱也不想这么说呀,要知道说一句谎话,要用十句谎话来说明这句谎话。喂喂喂~~~~言重了吧!好像有点了过了,来点正能量激励一下,担心什么呢?活在当下就好了,反正

再说了,今天不开心没关系,反正明天也不会好过。

程序员是吃青春饭的,干这一行很难吃到退休。江山代有才认出,一代比一代浪,请做好从入门到被裁员的觉悟吧!

通过二十多天的沮丧,问题终于解决了,但不是我解决的,说起来很奇葩,是bug自己不见 了。是这样的,首先声明代码没有太大的问题,只是之前有写错代码,可能真的是字符串截取索引越界,不过当时很快改过了,然而,运行程序bug一直存在,就好像Android Studio有记错功能一样,一直保存这个错误。那几天没法解决,沮丧几天后想了个办法,把报错的地方注释掉,先写其他的功能;写着写着,奇迹发生了,bug不见了,然而我并不高兴,总感觉有个更大的bug要发现,这时候还得 问问度娘,百度搜索:Android Studio run多次,经过一番查阅,终于知道问题发生的原因所在,他就是Android Studio2.0之后的逆天功能Instant Run。Instant Run作用是节约程序员在花大量的时间bulid,使用instant run, 在第一次运行之后,就可以快速的在真机中(或模拟器)看见修改后的结果。也正因为这样,instant run可能会有记忆功能,把错误也记住了(我是我的一种猜测),你接下来修改了代码,增加了代码,还会报错。如果大家以后遇到这样的情况,可以这样做,在Run菜单中Clean and Rerun找到它,点它运行程序

这是我在网上找到了一种解决方案。

出现bug的因素及解决方案:

1.80%的bug是程序员自己不小心、不认真、不负责出现的。这种情况解决方法就是多检查代码,检查再检查。

2.有些bug是工具出了问题。解决方法是检查、升级、换工具、百度

3.咱们程序员不怕bug,就怕不知道bug出在哪里。这种bug很难解决,最快最好的解决方法就是注释掉(别打我别打我,我也是这样过来的),注释排除法:重要功效就是确认bug出现在哪里。简单的说是找bug的方法。

N-2.转移伤害。当你绞尽脑汁还是没解决bug,这是你可以换个想法,假设你的一位程序员女同事出现了这么个bug,且她正在向你求助,你考虑如何帮助她。这样的话,你的注意力会转移,压力会得到一些缓解,且你的想法会更大胆,思路会更宽阔。

N-1.求助。向同事或者朋友求助,也可以到技术讨论区把遇到的问题拿出来大家帮忙,总之利用一切能利用的资源进行求助,大牛技术QQ群,微信公众号、知乎、CSDN等等。

N.重写代码

一个小小的bug不值得你怀疑人生,不过人生还是值得你去怀疑的。



About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK