一个分号引起的血案

    真的,真的是一个血案,血淋淋的惨痛教训。只因为多了一个小小的分号,惊动了无数的大领导,花了好几天的时间,才最终发现问题并解决。也许很多人会觉得,不就是一个分号嘛,何必那么没见过市面。但对于我司,对于我们这个庞大的系统,对于一个可能上亿人无形中使用的产品,我司的代码流程是非常复杂的,与互联网的运行模式很不一样。小小代码的合入,自己要测,UT、FT、ST等等都需要测试,还有版本测试,到后面是测试部测试,测试部的业绩是发现bug,而对于开发的小伙伴们,每天祈祷的是不要让bug泄露到测试部,测试部和程序猿都祈祷的是不要泄露到外场。bug影响性能差一点,可能客户很难发现,但是你搞到复位了,傻子也知道,搞得大面积用户不能通话了,又要被投诉了。哎,扯远了,这个故事没那么严重,只是泄露到了测试部,而且是测试部大面积有了业绩,领导们重视了发话了,最后却是一个小小的分号引起。


其实代码就是如下
if(0 == A) ;
{
    语句1
    return;
}

引起问题的代码就是如上标红出的分号,由于代码的前后文比较重要,引起了这个小区用户接入不了。其实本来的意图是增加异常分支处理,如果进入异常(即0 == A)则不执行下面的代码,返回。由于多了一个分号,等于if语句执行了一个空语句,后面不管什么条件都会继续执行语句1 并返回。恰恰return导致后面写指针不能更新。
代码问题几个,一个是要慎用return,可以改成if(0 != A)包含后面的语句,一个是if后多了一个分号。
但是人总是会犯错误的,如何避免这个问题才是重要的,代码走查也可能看走眼,单元测试是可以检查出来的,pclint也是可以检查出来的,系统测试也可能检查出来的。
关注分号,且行且珍惜。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值