為什么阿里巴巴不建議boolean類型變量用isXXX?

背景: 平時工作中大家經(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;
}
其實阿里巴巴發(fā)布的java開發(fā)手冊中就寫明了,強制規(guī)定,布爾類型的數(shù)據(jù),無論是boolean還是Boolean都不準使用isXXX來命名

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

因此,這里建議大家POJO中使用包裝數(shù)據(jù)類型,局部變量使用基本數(shù)據(jù)類型。
題外話
最后順便大家說下阿里巴巴集團技術(shù)團隊的集體編程經(jīng)驗和軟件設(shè)計智慧,濃縮成為立體的編程規(guī)范和最佳實踐。
眾所周知,現(xiàn)代軟件行業(yè)的高速發(fā)展對開發(fā)者的綜合素質(zhì)要求越來越高,因為不僅是編程相關(guān)的知識點,其他維度的知識點也會影響軟件的最終交付質(zhì)量,比如,數(shù)據(jù)庫的表結(jié)構(gòu)和索引設(shè)計缺陷可能帶來軟件的架構(gòu)缺陷或性能風(fēng)險;單元測試的失位導(dǎo)致集成測試困難;沒有鑒權(quán)的漏洞代碼易被黑客攻擊等。

從嚴格意義上講,《阿里巴巴Java開發(fā)手冊》超越了Java語言本身,明確作為一名合格開發(fā)者應(yīng)該具備的基本素質(zhì),因此本手冊適合計算機相關(guān)行業(yè)的管理者和研發(fā)人員、高等院校的計算機專業(yè)師生、求職者等閱讀,希望成為大家如良師益友般的工作手冊、工具字典和床頭書。
本書部分目錄如下:

獲取的方式很簡單,直接掃描下方公眾號回復(fù)關(guān)鍵字「阿里巴巴」,即可獲??!
長按下面的二維碼,關(guān)注公眾號“后端面試那些事”
回復(fù) “阿里巴巴” 四字自行領(lǐng)取吧
往期推薦

