2022年第一個線上問題,被領導罵慘了!
昨天,一位朋友說他們生產(chǎn)環(huán)境出bug了,哎,年底了,今年的年終獎估計涼涼了!
這位朋友剛剛出道不久,出了問題,第一時間找的我。
他把出問題的代碼發(fā)我了,叫我?guī)退鹯eview這段代碼。
for?(ProductOrderItem?orderItem?:?orderItemList)?{
????if?(orderItem.getProductOrderItem_user().getUser_id()?!=?user.getUser_id())?{
???????logger.warn("用戶訂單項與用戶不匹配,回到購物車頁");
???????return?"redirect:/cart";
????}
????if?(orderItem.getProductOrderItem_order()?!=?null)?{
????????logger.warn("用戶訂單項不屬于購物車,回到購物車頁");
????????return?"redirect:/cart";
????}
}
看這段代碼,不是很簡單嗎?
我只能盲猜了
是不是兩個user_id不一樣,數(shù)據(jù)有問題導致的? 你這user_id是Integer類型? 或者是 orderItem.getProductOrderItem_order()不等null?
我讓他debug看看,過一會,他說奇了怪了,并甩給我一個截圖:



user_id不相等的地方,我猜測IDEA編輯器已經(jīng)提示他了。兩邊都是Integer,屬于int的包裝類,也就是兩個Integer對象,你用!=去比較,這不是扯淡么?IDEA編輯器會這么提示的:
使用IDEA編輯器開發(fā)的朋友,田哥建議你多看看IDEA給你的代碼提示
問題來源
在此,也希望大家養(yǎng)成一個良好習慣,不要再這么編碼,對團隊負責也是對自己負責!
!=沒有使用equals()導致的。故事還沒結(jié)算
!=,在本地測試和測試環(huán)境,也都沒問題!
最后,其實測試的小伙伴這會也要跟著背鍋!
public?class?Test?{
????public?static?void?main(String[]?args)?{
????????Integer?aa=100;
????????Integer?bb=100;
????????System.out.println(aa==bb);
????????Integer?cc=128;
????????Integer?dd=128;
????????System.out.println(cc==dd);
????????Integer?ee=129;
????????Integer?ff=129;
????????System.out.println(ee==ff);
????}
}
-128~127做了緩存。
true
false
false
后記
吃一塹長一智!
有道無術,術可成;有術無道,止于術
歡迎大家關注Java之道公眾號
好文章,我在看??
評論
圖片
表情
