java開發經理說在看到代碼變量.equals(常量)保證打了他懷疑人生

程序員、軟件開發、碼農、計算機

段子吐槽

java開發經理:誰代碼寫這樣了變量.equals(常量)

保證打了他懷疑人生

程序汪:是我

開個玩笑,但低級問題導致的生產缺陷還真不少,目測會持續上演下圖悲劇

java開發經理說在看到代碼變量.equals(常量)保證打了他懷疑人生

經典低級問題

我來簡單總結下

字符比較

變量.equals(常量) ,請不要這樣寫

如果requestStr 入參是null就直接空指指異常了

java開發經理說在看到代碼變量.equals(常量)保證打了他懷疑人生

正確是用StringUtils工具類來比較

java開發經理說在看到代碼變量.equals(常量)保證打了他懷疑人生

集合遍歷

集合遍歷前忘記判空

下面代碼如果入參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

java開發經理說在看到代碼變量.equals(常量)保證打了他懷疑人生

字符拼接

字符拼接忘記防null

關鍵這種null場景不會直接異常,前端頁面就會出現null字符很奇怪,防空下就搞定

特別注意mysql數據庫表字段設置為空時,

String requestStr="程序汪";

requestStr=null;

System.out.println(requestStr+"發工作啦");

輸出結果:null發工作啦

代碼風險意識

  • 程序員寫代碼應該有防NPE(空指針縮寫)的意識
  • NPE非空邏輯保護
  • 線下階段主要集中注意力在有數據情況測試,沒有試過沒數據的場景,屬於功能測試遺漏
  • CR時增加對list對象的判空邏輯敏感度


分享到:


相關文章: