gpt4 book ai didi

java - 这是 switch case 的正确使用方式吗

转载 作者:行者123 更新时间:2023-12-01 22:17:09 25 4
gpt4 key购买 nike

我有一个开关盒,里面有四个重复代码(用于箭头键,但还有更多其他场景),唯一的区别是 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 principle ,即不要重复自己

有两种方法:

  • 使用switch为变量分配不同的值,然后在switch block 后使用通用代码。

    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;
    }
    }
  • 将公共(public)代码移至方法中。

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

关于java - 这是 switch case 的正确使用方式吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58618006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com