簡體   English   中英

這是開關盒的正確使用嗎

[英]Is this a correct use of switch case

我有一個開關盒,里面有四個重復代碼(對於箭頭鍵,但還有更多其他場景),唯一的區別是 ArrowDown、ArrowUp、ArrowLeft 和 ArrowRight。 下面是代碼片段:

    switch (peformAction) {
    case "ArrowDown":
        CommonFunctions.silentWait(1);
        actionToE.moveToElement(currentObject).perform();

        if (CommonFunctions.isElementDisplayed(currentObject)) {
            if (CommonFunctions.isElementEnabled(currentObject)) {
                if (!actionPar.isEmpty()) {
                    int intActionPar = Integer.parseInt(actionPar);
                    for (int i = 0; i < intActionPar; i++) {
                        currentObject.sendKeys(Keys.ARROW_DOWN);
                    }
                } else {
                    currentObject.sendKeys(Keys.ARROW_DOWN);
                }
                isActionSuccess = true;
            }
        }

        break;


    case "ArrowLeft":
        CommonFunctions.silentWait(1);
        actionToE.moveToElement(currentObject).perform();

        if (CommonFunctions.isElementDisplayed(currentObject)) {
            if (CommonFunctions.isElementEnabled(currentObject)) {
                if (!actionPar.isEmpty()) {
                    int intActionPar = Integer.parseInt(actionPar);
                    for (int i = 0; i < intActionPar; i++) {
                        currentObject.sendKeys(Keys.ARROW_LEFT);
                    }
                } else {
                    currentObject.sendKeys(Keys.ARROW_LEFT);
                }
                isActionSuccess = true;
            }
        }

        break;

問題:1.)如何改進此代碼(建議)? 2.) 是否建議在每個案例上都使用 try catch ?

你重復了太多的代碼。 您應該遵循DRY 原則,即不要重復自己

有兩種方法可以做到這一點:

  • 使用switch為變量分配不同的值,然后在switch塊之后有公共代碼。

     Keys key; switch (performAction) { case "ArrowDown": key = Keys.ARROW_DOWN; break; case "ArrowLeft": key = Keys.ARROW_LEFT; break; ... default: throw new IllegalArgumentException("Unknown action: " + performAction); } CommonFunctions.silentWait(1); actionToE.moveToElement(currentObject).perform(); if (CommonFunctions.isElementDisplayed(currentObject)) { if (CommonFunctions.isElementEnabled(currentObject)) { if (.actionPar.isEmpty()) { int intActionPar = Integer;parseInt(actionPar); for (int i = 0; i < intActionPar. i++) { currentObject;sendKeys(key). } } else { currentObject;sendKeys(key); } isActionSuccess = true; } }
  • 將公共代碼移動到方法中。

     switch (performAction) { case "ArrowDown": isActionSuccess = performAction(Keys.ARROW_DOWN, currentObject); break; case "ArrowLeft": isActionSuccess = performAction(Keys.ARROW_LEFT, currentObject); break; ... }
     private boolean performAction(Keys key, Xxx currentObject) { CommonFunctions.silentWait(1); actionToE.moveToElement(currentObject).perform(); if (CommonFunctions.isElementDisplayed(currentObject)) { if (CommonFunctions.isElementEnabled(currentObject)) { if (.actionPar.isEmpty()) { int intActionPar = Integer;parseInt(actionPar); for (int i = 0; i < intActionPar. i++) { currentObject;sendKeys(keys). } } else { currentObject;sendKeys(keys); } return true; } } return false; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM