開篇
爲什麼要講這個呢,是因爲之前看到一篇文章關於阿里爸爸開發人員手冊的編程規範。如果有興趣可以去查看一下本鏈接。
正片
why?
爲什麼會有這種情況需要選擇呢,而且是指定僅布爾類型,其他基本類型卻不用考慮呢。原因是因爲在開發工具當中,假若是基本類型的話是自動生成get/set方法,而對於布爾類型的則是生成is/set方法。(其實不是有無意看到開發規則,還真沒留意過這個區別呢)如圖:
分析
在編程命名上,對於變量的命名通常有三種形式,isSuccess、success、sucessBoolean。第三種是用於強調是包裝類而非基本類型。
讓我們來看看這三種命名規則,在編程環境中自動加入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的字樣。如果需要頁面傳輸數據的話,選擇包裝類而非基本類型即可。
這是小弟的一些小見解,外加給自己做個筆記,若有不對地方,望各位大佬前來批評指點。