buguge - Keep it simple,stupid

知识就是力量,但更重要的,是运用知识的能力why buguge?

导航

你的代码又导致资金损失了?活该!

请观察,下面switch代码有什么漏洞?

BankPayStatus bankPayStatus=...; // 银行侧返回的付款状态
switch (bankPayStatus) {
    // 付款成功的处理
    case SUCCESS:
        if (condition){
            ...
            update
            return;
        }
    // 付款失败的处理
    case FAIL:
        ...
        return;
    // 其他场景,按付款中来处理
    default:
        ...
        return;
}

 

再看下面付款代码案例。开发组里已经明确约定“支付红线”:在进行付款时,程序出现任何异常都不能直接将支付单置为付款失败。可是,依旧有开发者大意。

void pay(PayOrder payOrder) {
    try {
        AlipayOrderRequest orderRequest = buildAlipayOrderRequest(payOrder);
        AlipayOrderResponse response = alipaySender.sendPost(orderRequest);
        payOrder.setTransCode(response.subCode);
payOrder.setTransMsg(response.subMsg); payOrder.setPayStatus(PAYING); }
catch (Exception e) { log.error("调用通道异常", e); payOrder.setPayStatus(FAIL); } payOrderRepository.updatePayRequest(payOrder); }

 

 

人往往就是这样,很多事情,别人再怎么提醒和警告,自己也不加小心,非等到自己掉坑里了,才长记性。

自己掉坑里,长了记性,这还算比较好的。吃一堑长一智嘛!

而那些在同一个坑里多次翻车的,是不是又可怜又可笑呢?

 

“这家伙,得拉出去突突两分钟!”

  

出现bug后,一般有两种心态:

- 啊?原来这样实现会出现bug呀!涨姿势了!

- 我知道这里可能会出bug,不过可能应该不会有那一天,以后再说吧。

 

压根儿就不知道,是可以理解的。毕竟,人的知识积累是有一个过程的。

知道,却麻痹大意,视而不见,甚至明知故犯,这才是要命的。

 

我们看下面的2013年~2018年全国交通事故发生情况汇总分析(资料来源:中国统计年鉴)。据不完全统计,老司机出现重大交通事故的概率,远高于新手。为什么?大家可以琢磨。

 

我们看下面的微信支付官方文档截图。图中是支付结果通知的接口文档。当商户收到支付结果回调的报文后,在做相关逻辑处理时,微信支付团队给出了“特别提醒”。大家可以细品一下。为什么要给这么一个“特别提醒”呢?很简单,因为系统生产运行过程中出现过类似的事故呀。

不仅微信文档哦,很多公司的接口对接文档里,都有把类似注意事项描述的很清晰。

 

我曾经一个老战友多次强调“敬畏上线”。就是说,每次对生产系统的发版和更新,心中要有仪式感,且不可随随便便,想一出是一出。不光要“敬畏上线”,要“敬畏”我们所敲打的每一行代码!

 

posted on 2020-06-25 20:07  buguge  阅读(254)  评论(0编辑  收藏  举报