java 如何删除 switch 中的重复案例

How to remove duplicate cases in switch in java

我有 sonarQube 运行 但它说这些代码行中有重复项。如何在 switch 语句中解决这个问题?我正在学习 java 中的单元测试如何工作,所以任何帮助都会很棒!

switch () {
    case "M":
        campusLogo = "/watermark_main.png";
        break;
    case "IN":
        campusLogo = "/Watermark_IN.png";
        break;
    case "WA":
        campusLogo = "/Watermark_WA.png";
        break;
    case "MO":
        campusLogo = "/Watermark_MO.png";
        break;
    case "NC":
        campusLogo = "/Watermark_NC.png";
        break;
    case "NV":
        campusLogo = "/Watermark_NV.png";
        break;
    case "OH":
        campusLogo = "/Watermark_OH.png";
        break;
    case "TN":
        campusLogo = "/Watermark_TN.png";
        break;
    case "TX":
        campusLogo = "/Watermark_TX.png";
        break;

    default:
        campusLogo = "/watermark_main.png";
}

我认为以下解决方案应该适合您:

switch (choice) {
    case "IN":
    case "WA":
    case "MO":
    case "NC":
    case "NV":
    case "OH":
    case "TN":
    case "TX":
        campusLogo = "/Watermark_" + choice + ".png";
        break;

    default:
        campusLogo = "/watermark_main.png";
}

如果 SonarQube 说您有重复的块,那与您在此处显示的业务逻辑关系不大。 SonarQube 告诉您的是,您在另一个 class 或方法中复制了完全相同的业务逻辑。您应该检查重构您的项目,以便此 switch 语句仅出现在一个地方。