HTML5技术

变身超人程序员 - 陈宏鸿

字号+ 作者:H5之家 来源:H5之家 2017-04-20 11:03 我要评论( )

清明节放假前工作最后一天,协助同事解决了一个BUG,这个BUG对于所属的程序而言,可以说不是痛不痒,完全不影响使用,只是看起来有点变扭而已。然而, 对我而言, 解决这个问题的思路却是比较有代表性的,颇有一种曲线救国的味道。 事情大概是这个样子的。有

清明节放假前工作最后一天,协助同事解决了一个BUG,这个BUG对于所属的程序而言,可以说不是痛不痒,完全不影响使用,只是看起来有点变扭而已。然而, 对我而言, 解决这个问题的思路却是比较有代表性的,颇有一种曲线救国的味道。

 

事情大概是这个样子的。有需求部门反应,我们部门负责的某个项目的页面上数据显示有问题。有10条数据,每页显示4条,那么正常情况下第1页应该显示4条,第2页4条,第3页2条。因为某一处代码抽风,现在数据被显示成了第1页4条,第2页3条,第3页3条。尽管不是什么大问题,但是我们写代码做产品向来秉承着精益求精的作风,只要是个问题, 就算再小,也要修正。然后, 一帮程序员手忙脚乱的想抓住这个BUG消灭之。为什么是一帮程序员?修个BUG用的着这么大动干戈吗?大家有所不知, 因为这个BUG的当事人是一位萌妹子,大家帮忙出主意修BUG是不假,但是去揩个油那也是真的。一阵忙活之后, 问题出在哪里是找到了,却没法子下手改。因为这个项目依赖一个第三方分页显示插件,程序本身的逻辑没有问题,问题出在这个插件里面。去修改这个第三方插件的BUG显然不太现实,靠谱的解决方法就是把这个插件给换了,但是项目的代码跟交互和这个插件结合的非常紧密, 哪能说换就换,再说当时已经是晚上七点了,这一搞非得到凌晨不可,因此,大家都像泄了气的皮球,无可奈何,这都放假了还出这档子事,明天还要去给祖宗上坟呢,加班和对先人不敬,到底应该选哪个呢?心塞塞呀!

 

本来这种闲事我是不太喜欢管的,但是因为这个妹子明天必需要回家,车票买好了, 所以要把这个问题解决就必须在今天晚上, 让一个妹子加班到凌晨,我有些于心不忍, 一个如花似玉的小姑娘, 半夜一个人回家, 要是碰到坏人, 场面不敢想象。 于是我也上前去凑热闹了,说不定能帮上忙呢。

 

了解了问题来龙去脉后,发现这个问题在自己的技术认知范围内的确没有靠谱的解决方案,除非修复插件BUG或将插件替换,但是这两种方案都不是短时间内可以完成的。我闭上眼睛思考,既然是个BUG ,那肯定不是必现的,如果不去触发这个BUG ,那也算是把问题解决了。我脑子中灵光一闪,似乎抓到了一丝线索。我开始调式程序,总共10条数据

 

设为每页显示4条,显示结果为4条3条3条

 

设为每页显示3条,显示结果为3条3条2条2条

 

设为每页显示2条,显示结果为2条2条2条2条2条,一切正常, 没有触发BUG

 

我找到了规律,不触发BUG的情况是数据总条数必须能被每一页显示条数整除,这也就意味着,每页4条不能变,那只要把数据总条数变为12就可以。为验证我猜想, 我在原有的基础上加了2条数据, 测试运行, 原来的BUG消失了, 分页显示变的正常了。找到解决方案,接下来的事情就简单了, 只要让数据总数保持为4的倍数,再加上一些收尾的工作,问题完美解决, 整个过程花了不到10分钟的时间。

 

插件的BUG还在那里,根本没有被修复,但是用户反馈的问题却修好了,能用的舒服,程序员也不用加班了,两全其美。事后我仔细思考,我没应用什么别人不会的高大上技术,只是转变了一下思路,就轻松巧妙的将问题解决了,很有一种四两拨千斤的感觉。那是不是也可以把这种解决问题的思路推广到其它方面呢?

 

回忆过去,我以前也经常以这种思路在解决问题,只是过程与成果并没有显得非常的尖锐和突出。

 

之前,我的一个网站被恶意攻击者注入垃圾信息,整个网站满屏不堪入目的内容。我迫切需要解决这个问题,但网站的源代码在家中电脑上,我没有办法通过修改程序漏洞解决问题。现在手头唯一拥有的是数据库操作权限,但是把数据删了,恶意程序立马又注入新的,治标不治本啊。正愁眉不展间, 脑中灵光一闪, 方案出来了, 我可以在那个被注入表上加一个before触发器, 触发器的程序检测被写入的记录, 假如是来自恶意攻击的数据,就执行回滚操作,不让数据写入表中。花了十分钟写了十几行SQL,问题解决。程序的BUG还在那里,注入者的机器人程序还在不停的攻击,但是管他呢,我的最终目的达到,用什么方法根本不重要。邓爷爷都说过:能抓老鼠的就是好猫

 

还有一次,碰到一个不靠谱的需求,需求方发给我一个网站,说对这个网站不满意,让我改上面的功能。网站源代码没有,网站服务器权限没有,总之是什么都没有,完完全全是一个别人家的网站,让我改上面的功能,这尼玛任性的可不是一点点,真把程序员当神仙了。换作别人,估计一巴掌就把需求给搧回去了。但偏偏是我,真就把这个问题给解决。你们是不是以为我把人家网站的服务器给黑了,把代码down下来,改成自己想要的样子。当然不是,我是一个法律意识很强的程序员,不会干这种蠢事。我的做法是为那个网站开发一个chrome浏览器插件,插件里面有想要的功能。只要用户装上这个插件,每当访问这个网站,插件功能就被激活,供用户使用。可以把这个插件想象成游戏的外挂,只是功能没那么复杂。

 

上面讲的这些便是软件开发中湾道超车,曲线救国的做法。我对于程序开发理解是,写程序就是解决问题,问题摆在那里,不哭不闹不动不跳,因为在我眼里它就是死的。而解决问题的方法却是活的,只要愿意去发掘,就会有无数种, 而且这无数种方法中,优劣好差各不相同,程序员要做的就是在这么多方法中选择一种最合适的。通常情况的问题,程序员并不用为选哪一种方法而纠结,因数解决问题的方法就像电梯里的美女,一眼就能看的到,连选的力气都能省掉。然而, 在极端情况下, 解决问的方法匮乏, 而且都是歪瓜裂枣, 要找到合适的真的不容易 。在这种情况下,光靠脑子灵活眼光独到还不够,程序员需要能在这些烂方法中找到一种最好的,然后驾驭之。会找好方法和驾驭这个被找到的方法,这是两种能力,相互依赖,相辅相成,如能掌握并融会贯通,那么程序员的战斗力将会被发挥到极至。

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 如果两个程序员差不多,选写作能力更好的那个 - mindwind

    如果两个程序员差不多,选写作能力更好的那个 - mindwind

    2017-04-18 10:00

  • net.sz.framework 框架 登录服务器架构 单服2 万 TPS(QPS) - 失足程序员

    net.sz.framework 框架 登录服务器架构 单服2 万 TPS(QPS) - 失足

    2017-04-13 11:05

  • 程序员带你一步步分析AI如何玩FlappyBird - yhthu

    程序员带你一步步分析AI如何玩FlappyBird - yhthu

    2017-04-13 09:03

  • net.sz.framework 框架 轻松搭建服务---让你更专注逻辑功能---初探 - 失足程序员

    net.sz.framework 框架 轻松搭建服务---让你更专注逻辑功能---初探 -

    2017-04-02 10:11

网友点评