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

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

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

    PC的blog

    Finding... Thinking... Solving...

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      9 Posts :: 0 Stories :: 54 Comments :: 0 Trackbacks
    本文緊接使用重構移除丑陋的if else代碼(1)

    使用Enum替換int常量

    這一步比較簡單,先創建一個enum類:

    package de.jingge.refactoring;

    public enum SystemState {

        LOGGEDIN,

        LOGGEDOUT,

        IDLE;

    }


    然后開始重構SystemManager, 使用SystemState代替SystemManager里的int狀態:

       1. 添加 import static de.jingge.refactoring.SystemState.*;
       2. 刪除所有的integer常量  
       3. 將變量state的類型改為SystemState.

    代碼如下:



    package de.jingge.refactoring;

    import static de.jingge.refactoring.SystemState.*;

    public class SystemManager {

        SystemState state;

        
    public void login() {
            
    // call service#login()
            updateState(LOGGEDIN);
        }
       
        
    public void logout() {
            
    // call service#logout()
            updateState(LOGGEDOUT);
        }
       
        
    public void idle() {
            
    // call some other services
            updateState(IDLE);
        }
       
        
    public void updateState(SystemState state) {
            
    if (state == LOGGEDIN) {
                
    // do something after logging in is successful,
                
    // for example: show welcome dialog, open the last edit document, etc.
            } else if (state == LOGGEDOUT) {
                
    // do something after logging out is successful,
                
    // for example: free used resource, dispose GUI components, etc.
            } else if (state == IDLE) {
                
    // do something after the user is idle,
                
    // for example: save the application state temporarily, lock the application, etc.
            } else {
                
    throw new IllegalArgumentException("unknown state");
            }
            
    this.state = state;
        }
    }

    然后重構測試類:

    1.    添加import static de.jingge.refactoring.SystemState.*;
    2.    刪除所有常量前引用的SystemManager.

    package de.jingge.refactoring;

    import org.junit.AfterClass;
    import org.junit.BeforeClass;
    import org.junit.Test;
    import static org.junit.Assert.*;
    import static de.jingge.refactoring.SystemState.*;


    public class SystemManagerTest {

        
    private static SystemManager manager;

        @BeforeClass
        
    public static void setUpClass() throws Exception {
            manager 
    = new SystemManager();
            
    // add some service mock objects
        }
       
        @AfterClass
        
    public static void tearDownClass() throws Exception {
        }
       
        @Test
        
    public void login() {
            manager.login();
            assertEquals(manager.state, LOGGEDIN);
        }
      
        @Test
        
    public void logout() {
            manager.logout();
            assertEquals(manager.state, LOGGEDOUT);
        }

        @Test
        
    public void idle() {
            manager.idle();
            assertEquals(manager.state, IDLE);
        }
    }


    運行這個測試類->通過

    下一篇文章使用重構移除丑陋的if else代碼(3)開始處理if else hell




    聲明:本文版權歸作者所有,如需轉載請注明出處。

    posted on 2008-08-04 02:45 polygoncell 閱讀(2092) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 中文字幕亚洲日本岛国片| 国产无遮挡色视频免费观看性色| 91在线视频免费看| 亚洲毛片免费视频| 8x8x华人永久免费视频| 91天堂素人精品系列全集亚洲| 国产成人AV片无码免费| 久久亚洲AV午夜福利精品一区| 国产激情免费视频在线观看| 亚洲国产精品久久久久网站| 日韩精品内射视频免费观看| 亚洲最大成人网色| 免费福利视频导航| 亚洲最大天堂无码精品区| 日韩在线a视频免费播放| 久久精品熟女亚洲av麻豆 | 亚洲综合亚洲综合网成人| 一级做a爱过程免费视| 久久久精品国产亚洲成人满18免费网站 | 亚洲国产成人精品激情| 在线观看无码的免费网站| 国产精品久久久久久亚洲小说| 伊人久久亚洲综合影院| 亚洲天堂免费在线视频| 亚洲va无码专区国产乱码| 99久久人妻精品免费二区| 亚洲av片不卡无码久久| 日韩免费高清视频| aa午夜免费剧场| 亚洲短视频男人的影院| 2021免费日韩视频网| 亚洲精品无码永久在线观看男男| 亚洲中文字幕无码中文| 午夜视频在线观看免费完整版| 国产成人亚洲精品无码AV大片| 亚洲狠狠爱综合影院婷婷| 日韩精品无码免费专区午夜不卡| 亚洲一区二区在线免费观看| 成年女人午夜毛片免费看| 老司机午夜精品视频在线观看免费| 亚洲一区二区三区影院|