1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 3146字,需瀏覽 7分鐘

         ·

        2021-02-04 09:13

        背景: 平時工作中大家經(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()
        1. 其實javaBeans規(guī)范中對這些均有相應(yīng)的規(guī)定,基本數(shù)據(jù)類型的屬性,其getter和setter方法是getXXX()和setXXX,但是對于基本數(shù)據(jù)中布爾類型的數(shù)據(jù),又有一套規(guī)定,其getter和setter方法是isXXX()和setXXX。但是包裝類型都是以get開頭
        2. 這種方式在某些時候是可以正常運行的,但是在一些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)取吧

        往期推薦

        最近又Get個新技能,不是全棧也能用技術(shù)倒騰點東西賺零花錢了!

        新書上市 | 《Java性能優(yōu)化實踐》,眾多業(yè)內(nèi)大佬推薦閱讀

        "服務(wù)不可用"怎么排查?講了100遍還是記不???

        Spring中涉及的設(shè)計模式總結(jié)

        據(jù)說這套組合拳,可以把面試官給問懵逼了,你要不要試試?

        微信8.0之后,又悄悄上線新功能:別人“搶不到”的紅包!趕緊看看灰度到你了沒?



        瀏覽 45
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            日本50部无删减大尺度电影 | 水蜜桃和水蜜桃v2 | 亚洲日韩AV无码专区影院 | 精品一区在线播放 | 日韩精品人妻在线高清不卡一区二区 | 九九九精品 | 亂伦国产一区二区三 | 四川女人高潮毛片 | 成人欧美一区二区三区无码电影 | 久草免费在线视频 |