对于程序员来说,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

腾讯天猫经常出现这些低级的bug!的更多相关文章

  1. iOS之利用腾讯Bugly程序调试,测试代码bug、卡顿等情况

    1.自己先写一个 Demo 演示一下利用bugly测试崩溃的具体情况. 在ViewController里面实现崩溃代码如下:  运行后 毫无疑问程序报错了! 2.使用到第三方的框架Bugly,官方下载 ...

  2. 复盘价值1000万的腾讯云硬盘固件"BUG"

    摘要: 除了吃瓜,还是得吸取教训啊同学们! 这次,我从纯技术角度分析腾讯云与前沿数控的磁盘数据丢失事件,不站队. 硬盘门 这里说的硬盘门不是10年前陈老师的那一次,而聊的是最近"腾讯云&qu ...

  3. 2021S软件工程——结对项目第三阶段

    2021S软件工程--结对项目第三阶段 2021春季软件工程(罗杰 任健) 项目地址 1020 1169 1 实践反思 1.1 问题分析 两人习惯不一致 没有具体制定时间节点 写完代码才开始" ...

  4. 谈谈DOMContentLoaded:Javascript中的domReady引入机制

    一.扯淡部分 回想当年,在摆脱写页面时js全靠从各种DEMO中copy出来然后东拼西凑的幽暗岁月之后,毅然决然地打算放弃这种处处“拿来主义”的不正之风,然后开启通往高大上的“前端攻城狮”的飞升之旅.想 ...

  5. 初级Bug率,随时受不了

    一听到初级Bug这个名字,很多开发工程师都会觉得很头痛,还有那个“初级Bug率”,让人随时受不了. 初级Bug这个概念,在多数缺陷跟踪工具中,是不存在的,可以说是淘宝研发部的特色.初级Bug对应Bug ...

  6. 代码规范、代码复审、PSP

    作业三: 代码规范.代码复审.PSP 代码规范 代码规范的重要性 一.规范的代码可以促进团队合作  一个项目大多都是由一个团队来完成,如果没有统一的代码规范,那么每个人的代码必定会风格迥异.且不说会存 ...

  7. python标准库xml.etree.ElementTree的bug

    使用python生成或者解析xml的方法用的最多的可能就数python标准库xml.etree.ElementTree和lxml了,在某些环境下使用xml.etree.ElementTree更方便一些 ...

  8. JDK中的并发bug?

    最近研究Java并发,无意中在JDK8的System.console()方法的源码中翻到了下面的一段代码: private static volatile Console cons = null; / ...

  9. 如何进行shell脚本正确性测试

    在实际工作中,需要对shell脚本进行正确性测试. 如何用最快最有效的方式进行测试? 很多开发的习惯是,二话不说,写完/拿到,就跑一把,看看输入,输出,想要的操作是否完成,也就过了. 其实这是十分不严 ...

随机推荐

  1. Tuning 13 Using oracle blocks Efficiently

    推进使用自动管理 automatic segment 1 个 Blocks = 2的幂次方倍 tablespace 像一块地 segment 像一个房子 extents 向一个装砖头的框 blocks ...

  2. C++ STL标准模板库(list)

    //list的使用 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<list> using namesp ...

  3. Python之Matplotlib库常用函数大全(含注释)

    plt.savefig(‘test’, dpi = 600) :将绘制的图画保存成png格式,命名为 test plt.ylabel(‘Grade’) :  y轴的名称 plt.axis([-1, 1 ...

  4. Unity3D和网页数据交互的基本原理

    简介: 1.Unity3D的游戏引擎是和编辑器集成在一起的,所有它也是一个制作/开发平台. 2.Unity3D是使用JavaScript.C#作为核心脚本语言来驱动事个游戏引擎. 3.平台可以发布Ex ...

  5. 嵌入式开发之davinci--- 8148/8168/8127 中的图像采集格式Sensor信号输出YUV、RGB、RAW DATA、JPEG 4种方式区别

    简单来说,YUV: luma (Y) + chroma (UV) 格式, 一般情况下sensor支持YUV422格式,即数据格式是按Y-U-Y-V次序输出的RGB: 传统的红绿蓝格式,比如RGB565 ...

  6. 【python】模块测试 if name main

    verbose=1 def listing(module): if verbose: print '-'*30 print 'name:',module.__name__,'file:',module ...

  7. (转)Unity笔记之编辑器(UnityEditor)

    在使用unity3d的过程中,时常会需要从场景中寻找或者调用一个对象,而Unity就提供了一个贴心的功能——拖拽.用鼠标拖一下中比写堆代码直观的多吧!但是Unity提供的远远不止这一丢丢,下面我们来简 ...

  8. SQL语句的添加、删除、修改多种方法 —— 基本操作

    添加.删除.修改使用db.Execute(Sql)命令执行操作 ╔----------------╗ ☆ 数据记录筛选 ☆ ╚----------------╝ 注意:单双引号的用法可能有误(没有测试 ...

  9. Android实例-使用电话拨号器在移动设备上

    Android实例-使用电话拨号器在移动设备上 源文地址: http://docwiki.embarcadero.com/RADStudio/XE5/en/Mobile_Tutorial:_Using ...

  10. PMPBOK 进度管理

    项目进度计划提供详尽的计划,说明项目如何以及何时交付项目范围中定义的产品.服务和成功,是一种用于沟通和管理相关方期望的工具,为绩效报告提供了依据. 进度计划方法:关键路径发或敏捷方法.创建项目经度模型 ...