變量名用isSuccess還是success,你知道嗎?

開篇

爲什麼要講這個呢,是因爲之前看到一篇文章關於阿里爸爸開發人員手冊的編程規範。如果有興趣可以去查看一下本鏈接。

正片

why?

爲什麼會有這種情況需要選擇呢,而且是指定僅布爾類型,其他基本類型卻不用考慮呢。原因是因爲在開發工具當中,假若是基本類型的話是自動生成get/set方法,而對於布爾類型的則是生成is/set方法。(其實不是有無意看到開發規則,還真沒留意過這個區別呢)如圖:
在這裏插入圖片描述

分析

在編程命名上,對於變量的命名通常有三種形式,isSuccesssuccesssucessBoolean。第三種是用於強調是包裝類而非基本類型。
讓我們來看看這三種命名規則,在編程環境中自動加入getter/setter時候是怎麼樣的。以及在序列化過程中會發生什麼事情(對象轉json)這裏選擇用阿里巴巴的fastjson谷歌的gson作對比。

1.isSuccess

在這裏插入圖片描述
在這裏插入圖片描述
這裏可以看得出來,當你變量名爲isSuccess時候,自動生成get/set方式時候,會把is忽略掉而不是isIsSuccess作爲方法名。而有的序列化工具是根據get/set方法名作爲序列化的標準,即把is後面的當做是變量名稱。而谷歌的gson工具這類則是把真正的變量名當做序列化標準。

2.success

在這裏插入圖片描述
在這裏插入圖片描述
這裏因爲使用的是success變量名,所以不論是從變量名入手還是方法名入手,變量的名字都是翻譯成success。這樣序列化出來的字符串則是正確的。

3.successBoolean

在這裏插入圖片描述
當布爾型是包裝類的時候,則自動生成的不是is/set方法了。而是正正規規的get/set方法了,那麼不管哪種解析都好,就不會出現變量名獲取的名字和方法名獲取的名字不同情況。那麼爲什麼要引出包裝類命名呢?(通常情況是出現在RPC框架或者反序列化時候,筆者就不演示了,而是直接序列化反向推到)請看下圖:
在這裏插入圖片描述
圖中明顯看出來,當變量爲基本數據類型的時候,在沒有賦值情況下還是會顯示默認值false。而包裝類則是空的。這種情況好比,你在頁面沒有給該值填寫任何數據,如果使用包裝類的話在後臺處理數據的時候,你可以直接判斷是否爲空即可,而使用基本數據類型,你判斷爲false的話,這個值有可能是人爲輸入也有可能是自動填寫的。

總結

當使用變量爲布爾基本類型的話,變量名選擇success。不可在前面添加is的字樣。如果需要頁面傳輸數據的話,選擇包裝類而非基本類型即可。

這是小弟的一些小見解,外加給自己做個筆記,若有不對地方,望各位大佬前來批評指點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章