<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JavaExplore

    一切像霧像雨又像風(fēng)
    posts - 19, comments - 45, trackbacks - 0, articles - 0

    代碼中經(jīng)常會(huì)出現(xiàn)枚舉性的變量,比如血型、性別之類。
    以血型為例:

    class?Blood {
    public?final?static?
    int ?o = 0 ;
    public?final?static?
    int ?A = 1 ;
    public?final?static?
    int ?B = 2 ;
    public?final?static?
    int ?AB = 3 ;

    private?Blood();
    }



    class?person
    {
    private?
    int ?_blood;
    public?
    void ?setBlood( int ?b) {
    ???_blood
    = b;
    }

    如果要給一個(gè)person的實(shí)例設(shè)置血型,代碼如此:person.setBlood(Blood.A);
    這個(gè)寫法的代碼中,setBlood的參數(shù)為整型,如果如此調(diào)用person.setBlood(9);
    編譯器無(wú)法發(fā)現(xiàn)錯(cuò)誤,只能靠人為控制,如果在方法setBlood中檢測(cè)參數(shù)的有效性,又超越了該方法的職責(zé)。

    重構(gòu)后的代碼如下:

    final class?Blood{
    public?final?static?Blood?O
    =new?Blood(0);
    public?final?static?Blood?A
    =new?Blood(1);
    public?final?static?Blood?B
    =new?Blood(2);
    public?final?static?Blood?AB
    =new?Blood(3);
    private?
    int?_bloodCode;
    private?Blood(
    int?b){
    ????_bloodCode
    =b;
    ??}

    public?
    int?getCode(){
    ????
    return?_bloodCode;
    ??}

    }


    class?person
    {
    private?Blood?_blood;
    public?setBlood(Blood?b)
    {
    ????_blood
    =b;
    ??}

    }

    如此,(1)隱藏了血型的編碼細(xì)節(jié)
    ????????????(2)方便編譯期間發(fā)現(xiàn)錯(cuò)誤
    ??????????? (3)避免使用超越數(shù)據(jù)范圍的參數(shù)

    Feedback

    # re: 神奇的重構(gòu)技術(shù)(《重構(gòu)》讀書筆記 一)  回復(fù)  更多評(píng)論   

    2005-09-19 09:26 by fanta
    規(guī)范的編程是不允許出現(xiàn)person.setBlood(9);這樣的代碼的,不能直接將數(shù)字常量直接放在代碼里的

    # re: 神奇的重構(gòu)技術(shù)(《重構(gòu)》讀書筆記 一)  回復(fù)  更多評(píng)論   

    2005-09-19 09:31 by JavaExplore
    那就public final static int H=9;
    person.setBlood(H);

    # re: 神奇的重構(gòu)技術(shù)(《重構(gòu)》讀書筆記 一)  回復(fù)  更多評(píng)論   

    2005-09-19 13:30 by usherlight
    Java沒(méi)有Enum嗎?

    # re: 神奇的重構(gòu)技術(shù)(《重構(gòu)》讀書筆記 一)  回復(fù)  更多評(píng)論   

    2005-09-19 14:59 by TiGERTiAN
    好像tiger里面新增了Enum..

    # re: 神奇的重構(gòu)技術(shù)(《重構(gòu)》讀書筆記 一)  回復(fù)  更多評(píng)論   

    2005-09-19 15:18 by ^ Mustang ^
    tiger李已經(jīng)有enumeration了,不用多此一舉了

    # re: 神奇的重構(gòu)技術(shù)(《重構(gòu)》讀書筆記 一)  回復(fù)  更多評(píng)論   

    2005-09-20 13:33 by ^ Mustang ^
    你有沒(méi)有看過(guò)Tiger中enum的實(shí)現(xiàn)?你以為enum僅僅是一個(gè)面向過(guò)程的數(shù)據(jù)結(jié)構(gòu)?Tiger中的enum是純面向?qū)ο蟮模锩娣庋b了很多方法,只不過(guò)你使用的時(shí)候覺(jué)察不到而已。

    # re: 神奇的重構(gòu)技術(shù)(《重構(gòu)》讀書筆記 一)  回復(fù)  更多評(píng)論   

    2005-09-20 13:36 by JavaExplore
    en 我覺(jué)得這種方法完全面向?qū)ο?是一種很不錯(cuò)的設(shè)計(jì)
    沒(méi)有使用過(guò)Tiger中的enum,有機(jī)會(huì)一定看看

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 最新仑乱免费视频| 久久久久久a亚洲欧洲AV| 人妻18毛片a级毛片免费看| 亚洲精品色午夜无码专区日韩| 久久精品免费一区二区三区| 亚洲不卡1卡2卡三卡2021麻豆| 国产免费资源高清小视频在线观看| 国产精品hd免费观看| 亚洲成a人片在线网站| 男人的天堂亚洲一区二区三区 | 亚洲人成色777777精品| 亚洲乱码中文字幕综合234| 中文字幕亚洲免费无线观看日本 | 羞羞视频在线观看免费| 蜜芽亚洲av无码精品色午夜| 成人五级毛片免费播放| 成人片黄网站色大片免费观看APP| 亚洲一级黄色大片| 国产亚洲午夜高清国产拍精品 | 91福利免费网站在线观看| 亚洲一区二区三区乱码在线欧洲| 亚洲中文字幕伊人久久无码| 亚洲天堂免费在线| 国产做国产爱免费视频| 亚洲AV成人无码网天堂| 亚洲码一区二区三区| 亚洲综合AV在线在线播放| 24小时免费直播在线观看| APP在线免费观看视频| 女bbbbxxxx另类亚洲| 亚洲成a人片7777| 伊人久久亚洲综合| 国产精品酒店视频免费看| 四虎在线最新永久免费| 在线看片免费人成视频福利| 免费看美女午夜大片| 国产人成亚洲第一网站在线播放| 亚洲成a人片在线观看中文动漫 | 亚洲中文字幕无码爆乳AV| 国产一区二区三区免费在线观看 | 亚洲国产精品嫩草影院久久|