BUG总结——【构造函数写逻辑】引发的极大的线上问题

刚才排查出一个线上问题,极为严重,但是引发点却非常小,让人深省。

构造函数不写逻辑 这句话一直说,但是一直不理解原因,也确实没遇到过有问题的代码。但是今天却实实在在被坑了一大把,还是很长记性的,在这里记一下,以后警觉。


首先最开始我们的代码是这样的:

        Repayment vo = new Repayment();
	vo.setId(withholdvo.getRepaymentId());
	vo.setStatus(0);
	withholdService.updateRepayment(vo);

在这里是我写的代码,原意是更新一个Repayment的status。

一直运行也是正常的,但是后来我们同事加了句这样的代码:

public Repayment(){
	amount = BigDecimal.ZERO;
	amountPaid = BigDecimal.ZERO;
	capital = BigDecimal.ZERO;
}

然后,可怕的事情就发生了,在更新的时候,把原有的Repayment里应有的数据全都更新成了0。

这样就很严重了,改了一大堆的数据才修复,而且当时这个Bug不好找,找了好久才发现。

这种的操作还是应该在init方法执行,或者说可以有一个带参数的构造函数来处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值