為什么阿里強(qiáng)制 boolean 類型變量不能使用 is 開頭?
來源:blog.csdn.net/belongtocode/article/details/100635246
背景
平時(shí)工作中大家經(jīng)常使用到boolean以及Boolean類型的數(shù)據(jù),前者是基本數(shù)據(jù)類型,后者是包裝類,為什么不推薦使用isXXX來命名呢?到底是用基本類型的數(shù)據(jù)好呢還是用包裝類好呢?
例子
1.其他非boolean類型
?private?String?isHot;
????public?String?getIsHot()?{
????????return?isHot;
????}
2.boolean類型
?private?boolean?isHot;
????public?boolean?isHot()?{
????????return?isHot;
????}
3.包裝類型
?private?Boolean?isHot;
????public?Boolean?getHot()?{
????????return?isHot;
????}
4.不以is開頭
??private?boolean?hot;
????public?boolean?isHot()?{
????????return?hot;
????}
5.包裝類型
?private?Boolean?hot;
????public?Boolean?getHot()?{
????????return?hot;
????}????
其實(shí)阿里巴巴發(fā)布的java開發(fā)手冊中就寫明了,強(qiáng)制規(guī)定,布爾類型的數(shù)據(jù),無論是boolean還是Boolean都不準(zhǔn)使用isXXX來命名

對于非boolean類型的參數(shù),getter和setter方法命名的規(guī)范是以get和set開頭 對于boolean類型的參數(shù),setter方法是以set開頭,但是getter方法命名的規(guī)范是以is開頭 包裝類自動生成的getter和setter方法的名稱都是 getXXX()和setXXX()
1.其實(shí)javaBeans規(guī)范中對這些均有相應(yīng)的規(guī)定,基本數(shù)據(jù)類型的屬性,其getter和setter方法是getXXX()和setXXX,但是對于基本數(shù)據(jù)中布爾類型的數(shù)據(jù),又有一套規(guī)定,其getter和setter方法是isXXX()和setXXX。但是包裝類型都是以get開頭
2.這種方式在某些時(shí)候是可以正常運(yùn)行的,但是在一些rpc框架里面,當(dāng)反向解析讀取到isSuccess()方法的時(shí)候,rpc框架會“以為”其對應(yīng)的屬性值是success,而實(shí)際上其對應(yīng)的屬性值是isSuccess,導(dǎo)致屬性值獲取不到,從而拋出異常。
總結(jié)
1、boolean類型的屬性值不建議設(shè)置為is開頭,否則會引起rpc框架的序列化異常。
2、如果強(qiáng)行將IDE自動生成的isSuccess()方法修改成getSuccess(),也能獲取到Success屬性值,若兩者并存,則之后通過getSuccess()方法獲取Success屬性值。
工作中使用基本類型的數(shù)據(jù)好還是包裝類好
咱們舉個(gè)例子,一個(gè)計(jì)算盈利的系統(tǒng),其盈利比例有正有負(fù),若使用了基本類型bouble定義了數(shù)據(jù),當(dāng)RPC調(diào)用時(shí),若出現(xiàn)了問題,本來應(yīng)該返回錯(cuò)誤的,但是由于使用了基本類型,返回了0.0,系統(tǒng)會認(rèn)為沒有任何問題,今年收支平衡,而不會發(fā)現(xiàn)其實(shí)是出現(xiàn)了錯(cuò)誤。
若使用了包裝數(shù)據(jù)類型Double,當(dāng)RPC調(diào)用失敗時(shí),會返回null,這樣直接就能看到出現(xiàn)問題了,而不會因?yàn)槟J(rèn)值的問題影響判斷。
其實(shí)阿里java開發(fā)手冊中對于這個(gè)也有強(qiáng)制規(guī)定:

因此,這里建議大家POJO中使用包裝數(shù)據(jù)類型,局部變量使用基本數(shù)據(jù)類型。
推薦閱讀 一鍵生成Springboot & Vue項(xiàng)目!【畢設(shè)神器】
END
順便給大家推薦一個(gè)GitHub項(xiàng)目,這個(gè) GitHub 整理了上千本常用技術(shù)PDF,絕大部分核心的技術(shù)書籍都可以在這里找到,
GitHub地址:https://github.com/javadevbooks/books
Gitee地址:https://gitee.com/javadevbooks/books
電子書已經(jīng)更新好了,你們需要的可以自行下載了,記得點(diǎn)一個(gè)star,持續(xù)更新中..

