一个值得记住的教训啊

昨天下午实现一段代码,如果一说的话非常简单,非常低级的问题,但当时测试好几次,包括两个人review了,都没有发现问题.

结果集成到应用发布的时候出现BUG了,只好回滚.好在我们的应用都有预发而机制,没有影响线上的真实应用.

 

场景是这样的:

 

switch(x){

    case 1:

    case 2:

    case 3: // nothing

               break;

    case 4:

              dosomething;break;

  

    case 5:

              dosomething;break;

    default:

              dosomething;break;

 

昨天要实现case 3的逻辑,是一个URL编码.结果改成:

switch(x){

    case 1:

    case 2:

    case 3: // nothing

               urlencode(url);

               break;

    case 4:

              dosomething;break;

  

    case 5:

              dosomething;break;

    default:

              dosomething;break;

 

当时测试的时候只写了个URL传进来,正确输出了.

没想到case 1和case 2的情况穿越到 case 3了,结果是case 1和case 2的字符串都进入了urlencode的逻辑.

这么低级有错误,说出来谁都明白,或者如果整个代码是自己一次性写的,绝对不会犯这种低级错误,但在修改别人原有代码时

却忘记了在上面加个break来阻止穿越.

 

这样的代码如果考虑到以后别人可能修改和维护,其实不如费点事每个case直接加上break;否则别人很容易在增加处理状态时忘记

上面的穿越.

 

小心啊,小心................................

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值