腾讯天猫经常出现这些低级的bug!
对于程序员来说,bug很讨厌。每天重复着写代码、找bug、修改bug的动作。按理说互联网巨头的产品,bug应该比较少。但是实际上,无论是用百度、天猫、谷歌等产品,经常都会出现这些低级的bug,让人很火大。这不,有个网友就在网上吐槽:
这个网友称,腾讯QQ空间好友的动态里,经常没办法显示好友的备注名称。安卓客户端的同个页面,可以打卡很多次,这样导致的后果就是,返回的时候要按很多次的返回键。不仅如此,天猫登录界面在firefox下的兼容性很差。例如说,明明没有显示出来验证码,却要求登录用户输入验证码。
还有在google云端硬盘上传文件夹,结果是乱码。
关于网友提出的这个问题,大家深有感触。但是很多网友还是觉得,程序员混口饭吃不容易,莫要再截图打兄弟们的脸了。
网友一:
巨头的系统都很庞大,产品组的同事每提一个bug,程序员要先去重现bug重现,然后看它跑的哪几行代码,再去改代码。这时本地开发算是完成,也通过测试,可以提交到团队的测试环境了。但是有时候,好几个bug背后的代码相互依赖,可能你的同事 merge 的时候把你的代码冲掉了,或者在中间插入了其他的代码,然后又要想办法重新改,或者说产生了新bug。
网友二:毕竟互联网才发展了这么些年,还很不完善。
网友三:没有百分百的测试覆盖率,只要是人写出来的程序,做出来的产品,就会有bug。无须大惊小怪。
网友四:无论什么公司的产品都不可避免有一些bug,互联网巨头也无法例外而且还有可能更多。
网友五:有人的地方,就有江湖,和BUG。
看来大家对待bug,态度还是很宽容的。其实也是,再好的程序,可能也会出现代码,更何况互联网巨头这些拥有庞大系统的代码库。下面,有个网友分享了一个,据说是最大的bug。
Azure底层fabric有过这么一段code,目的是在做创建一张新的证书并设置有效期为一年后这件事。
那么要先获得一年后的日期,本来用DateTime.Today().Add(new TimeSpan(365,0,0,0))就可以了(编辑:经提醒,AddYear(1)是最简单而且更精确的)。写代码的哥们脑洞了下写成new DateTime(today.Year+1,today.Month,today.Day)。经过各种测试运行一直都没问题。直到2012年2月29日,ArgumentOutOfRangeException。后果是整个Azure挂了十多个小时吧。
虽然说bug不可避免,但是写代码时,最好还是尽量减少bug,下面分享几个方法。
1.写代码时不要分心,缺陷代码头号敌人就是分心。有些时候,一个Twitter或GTalk都会将你的思路打断,这时候你需要集中注意力。
2.集成测试或者单元测试模块,写代码一定要遵循测试、代码、测试的原理。
3.如果代码库已经测试好,是很多开发者都使用过的,经过很多次测试的,而且你又打算实现这个代码库同样功能,这时候,你可以尽情的使用这些代码。
4.编译器的警告,千万不能忽视。通常情况下,编译器很容易将代码中存在的bug识别出来。对代码进行调试之前,最好是使用最高级别的警告,来编译代码,看看有没有明显的错误存在。
5.日志:日志工具安装很方便,它可以把日志分为info、warning、error三大类型。而通过这些日志,你很快就可以追踪到到底发生什么。
6.代码审查:提交代码时,最好让别人审查一下你的代码,以此看看有没有错误出现。
其实出现bug,算是很正常的一件事,程序员相信都不敢很绝对的说自己写的代码不会出错,当然,谷歌技术大牛Jeff Dean除外,因为他号称自己的代码从来不会出错。但是作为程序员,还是尽量避免出现bug。
学编程技术,就到W3Cschool,如果你喜欢我们的文章,可以点击右上角关注我们;如果你想看到更多IT界的资讯,可以加我们的公众号。
公众号:w3cschoolcn