程序員、軟件開發、碼農、計算機
段子吐槽
java開發經理:誰代碼寫這樣了變量.equals(常量)
保證打了他懷疑人生
程序汪:是我
開個玩笑,但低級問題導致的生產缺陷還真不少,目測會持續上演下圖悲劇
經典低級問題
我來簡單總結下
字符比較
變量.equals(常量) ,請不要這樣寫
如果requestStr 入參是null就直接空指指異常了
正確是用StringUtils工具類來比較
集合遍歷
集合遍歷前忘記判空
下面代碼如果入參names是null情況,也悲劇了空指針
List names= Lists.newArrayList("程序汪","毛毛","莉莉");
for(String n:names){
//TODO 業務邏輯
}
正確方式 用spring的集合工具判空在繼續操作
if(!org.springframework.util.
CollectionUtils.isEmpty(names)){
System.out.println(StringUtils.join(names.toArray(),","));
}
空字符和null不敏感
很多業務空字符和null就是2種場景
碼農有時記住防null但忘記了空字符情況
很貼心的工具類
org.apache.commons.lang.StringUtils
字符拼接
字符拼接忘記防null
關鍵這種null場景不會直接異常,前端頁面就會出現null字符很奇怪,防空下就搞定
特別注意mysql數據庫表字段設置為空時,
String requestStr="程序汪";
requestStr=null;
System.out.println(requestStr+"發工作啦");
輸出結果:null發工作啦
代碼風險意識
- 程序員寫代碼應該有防NPE(空指針縮寫)的意識
- NPE非空邏輯保護
- 線下階段主要集中注意力在有數據情況測試,沒有試過沒數據的場景,屬於功能測試遺漏
- CR時增加對list對象的判空邏輯敏感度
關鍵字: requestStr NPE 數據庫表