作为程序员,有没有一个BUG让你心交力瘁没日没夜的加班,找啊找,找出来以后看着这个BUG差点一口鲜血喷在显示器上呢?曾经在同事中间提过这个问题,大家异常激动,争先恐后发表自己的获奖感言,提起自己不堪回首的往事无人不捶胸顿足。唉。。。谁没有智商余额不足的时候呢。作为从小就是俺们村久负盛名的马大哈,我对这种事特别有心得,总结几件比较低级,同时浪费比较多时间来解决的问题。
好了,各位,到了今天精彩的top5时刻了,挥舞你们的双手,让我看到你们。药药药。。。切克闹。。。
top 5:精神病人思维广
其实严格说来这件事跟我关系不大,因为我只是维护那个程序,数据库字段也不是我改的,但是这样的蠢问题花了两天多时间,也该上榜。
事情是这样的,公司一套程序将数据库中常用、公共的配置数据加载在内存中作为公参使用,部署在这台机器上的程序根据数据头和数据长度到内存中去取需要的参数。服务A已经在生产稳定的跑了好几年,某日测试同事B君告诉我这个程序有问题,了解大概原因以后推测出是环境问题,因为程序在生产环境和开发环境都没有问题,挨个向有该环境操作权限的同事询问近期对环境的修改情况,发现都不涉及这部分。于是申请底层源代码权限(由于办事效率低,其实这些乱七八糟的事都花了快一天),开始各种跟踪定位,加日志(测试环境不允许gdb)。后来发现是服务A到内存获取数据时的msg_size和数据库中的datalen长度不一,获取数据失败(妈蛋,这里怎么没有日志啊)。这才想起来去看一眼表结构,晴天霹雳,应该是varchar2(5)的字段生生的给改成varchar2(20),修改理由是随便插入几个数据长度不够就给改了,这能乱插吗?男人不是该控制一下的么?还好修改那哥们添加数据时在remark字段留下了他自己的大名,一位新来的,让我们可以邮件围殴他一顿。
上榜理由:工作方法不正确,明明知道是环境问题,却只顾埋头跟踪代码。药不能停
蠢哭指数 :★★★
top 4:'/0' '/n'傻傻分不清
上半年去某游戏公司面试,刚好是晚饭时间,面试官给我一份试卷就吃饭去了。其实那会儿我也很饿了,决定速战速决在他吃完回来之前做完,于是奋笔疾书。果然,面试官回来我刚好做完,于是对照答卷面试。首先看的是编程题,题目是不用库函数编写一个字符串操作的函数(具体忘了)。面试官看了一眼指着 while (*p != '\n') 问我这是啥意思,我心想,这么简单的问题还问,明显不是我的菜。我随口一答循环字符串一直到结尾啊,问确定吗?斩钉截铁得答确定!再问真的确定?我仔细看了一眼,顿时一万头脱缰的草泥马在我心中奔腾。看是各种解释,这是手滑写错了,真实写代码的时候肯定不这么写。于是后面的面试草草完事,终于我可以早点回家吃饭了,面试也就没有然后了。
上榜理由:编码不仔细
蠢哭指数: ★★★☆
top 3:智商明显不够用
&& || ()符号使用不恰当, 这类问题出现过很多次,导致逻辑和预期的直接相反,让我一直觉得是不是小时候落过水,脑子没甩干。不过随着工作经验的增长,这类问题也基本不会出现,偶尔出现也会很快解决掉。
上榜理由:脑子锈到了
蠢哭指数:★★★★
top 2:空格让我很受伤
去年年底一个比较紧的项目,程序还没跑通但离上线却只有两周时间不到,为了尽快完成经理亲自前来督战,一起奋战到深夜。当时的问题是这样的,通过C++程序(我负责)调用lua脚本(同事G君负责)处理csv文件,处理完生成一个新文件。处理前后的csv文件名都是通过C++传入到lua中,lua只负责处理文件内容。日志能正确显示传入参数正确,可调了一晚上也没见有新文件生成。所有人的目光都聚集在lua代码中,甚至我也围观过去指指点点,一行一行分析,没有找到任何问题。就在大家精疲力尽的时候我无意中发现我传过去的参数其实有问题,outFileNm= "/aaaa/bbbb/cccc ";看到了吧,outFileNm文件名的最后多了一个空格,导致脚本open失败(G君因为业余的没判断失败也被吐槽的无地自容)。当时我很低调的重新编译,偷偷把程序替换了,否则还不被骂死。当然,跑通以后我还是老实的承认了这个错误,最后的晚饭也不是我请的,经理请的。
上榜理由:编码不仔细,代码设计不合理
蠢哭指数:★★★★☆
top 1:双胞胎变量
这是职业生涯最黑暗的一天,至今仍作为失败的教科书来教育后来者。
那是刚毕业的时候,在一段代码中我居然声明了两个长得很像的变量,具体名字忘记了,大概就是一个叫value一个叫Value,很像有没有?双胞胎有没有?是的,太特么像了。导致我给value赋值了,调用的却是Value,关键是日志里面打印的也是value。好像记得是加班到深夜才找出这个问题,现在想想还是不忍直视。
上榜理由:无力吐槽了
蠢哭指数:★★★★★
回来补一刀
前两天,同事在调用我开发的文件传输组件时,说遇到一个奇怪的问题,只有本机作为服务端时才能上传成功。由于时间紧任务重,我只好加班留下来和他一起查问题,查了一个多小时还是毫无眉目,返回的结果依然是错误404。正在我焦头烂额之时,我说让我看看你的代码,好家伙,这一看我差点没把他直接扔下楼去。因为他把服务器地址写成127.0.0.1,知道真相的我眼泪掉下来啊。不过这也是失误,同事也是资深的程序员,只是当时俩人都没往这个方面想,算是中了一个大坑。
上榜理由:测试demo不认真写的下场很惨的
蠢哭指数:★★★★★
这些问题虽然都是很低级很遭鄙视,但每个程序员都多多少少的犯过一些低级错误,正所谓路走多了总会踩到狗屎的时候,尤其是新手。所以我觉得一些良好的编程习惯是一定要在从业之处就养成好,包括代码风格,工作方法,遇到问题切不能眉毛胡子一把抓。