BUG总结——【构造函数写逻辑】引发的极大的线上问题
生活随笔
收集整理的這篇文章主要介紹了
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方法執行,或者說可以有一個帶參數的構造函數來處理。
總結
以上是生活随笔為你收集整理的BUG总结——【构造函数写逻辑】引发的极大的线上问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法—1,简单说说最常见的冒泡排序(Bu
- 下一篇: 接口幂等性的设计之————redis分布