[英]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.