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

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

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

    JavaExplore

    一切像霧像雨又像風
    posts - 19, comments - 45, trackbacks - 0, articles - 0

    代碼中經常會出現枚舉性的變量,比如血型、性別之類。
    以血型為例:

    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;
    }

    如果要給一個person的實例設置血型,代碼如此:person.setBlood(Blood.A);
    這個寫法的代碼中,setBlood的參數為整型,如果如此調用person.setBlood(9);
    編譯器無法發現錯誤,只能靠人為控制,如果在方法setBlood中檢測參數的有效性,又超越了該方法的職責。

    重構后的代碼如下:

    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)隱藏了血型的編碼細節
    ????????????(2)方便編譯期間發現錯誤
    ??????????? (3)避免使用超越數據范圍的參數

    Feedback

    # re: 神奇的重構技術(《重構》讀書筆記 一)  回復  更多評論   

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

    # re: 神奇的重構技術(《重構》讀書筆記 一)  回復  更多評論   

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

    # re: 神奇的重構技術(《重構》讀書筆記 一)  回復  更多評論   

    2005-09-19 13:30 by usherlight
    Java沒有Enum嗎?

    # re: 神奇的重構技術(《重構》讀書筆記 一)  回復  更多評論   

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

    # re: 神奇的重構技術(《重構》讀書筆記 一)  回復  更多評論   

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

    # re: 神奇的重構技術(《重構》讀書筆記 一)  回復  更多評論   

    2005-09-20 13:33 by ^ Mustang ^
    你有沒有看過Tiger中enum的實現?你以為enum僅僅是一個面向過程的數據結構?Tiger中的enum是純面向對象的,里面封裝了很多方法,只不過你使用的時候覺察不到而已。

    # re: 神奇的重構技術(《重構》讀書筆記 一)  回復  更多評論   

    2005-09-20 13:36 by JavaExplore
    en 我覺得這種方法完全面向對象 是一種很不錯的設計
    沒有使用過Tiger中的enum,有機會一定看看

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 农村寡妇一级毛片免费看视频 | 亚洲爆乳无码一区二区三区| 你是我的城池营垒免费看| 337p日本欧洲亚洲大胆精品555588 | 免费无码一区二区| 亚洲剧场午夜在线观看| 久久夜色精品国产嚕嚕亚洲av| 国产无遮挡吃胸膜奶免费看| 成人毛片手机版免费看| 日韩免费视频播放| 精品少妇人妻AV免费久久洗澡| 亚洲日韩一区二区一无码| 成熟女人牲交片免费观看视频 | 日韩精品一区二区亚洲AV观看| 免费中文熟妇在线影片 | a在线免费观看视频| 亚洲一区中文字幕在线观看| 亚洲国产成人VA在线观看| 美丽的姑娘免费观看在线播放| 日韩免费在线中文字幕| 亚洲熟妇无码久久精品| 国产成人A亚洲精V品无码| 国拍在线精品视频免费观看| 99久久免费国产精品热| 亚洲av日韩av永久无码电影| 内射干少妇亚洲69XXX| 亚洲国产精品无码久久青草| 亚洲国产精品免费观看| 三级毛片在线免费观看| 精品无码专区亚洲| 亚洲成人黄色在线| 国产av天堂亚洲国产av天堂 | 亚洲片国产一区一级在线观看| 午夜性色一区二区三区免费不卡视频| a级毛片免费网站| MM1313亚洲精品无码久久| 亚洲小视频在线播放| 久久青青成人亚洲精品 | 国产精品亚洲AV三区| 亚洲一级在线观看| 亚洲视频在线观看网址|