首页 > 解决方案 > 优化 IF 语句中的多个 OR 条件

问题描述

我是 java 新手,正在尝试学习更好的编码方式。请告诉我是否可以根据调用方法中传递的用户名将以下 ELSE IF 语句中的多个 OR 条件替换为任何其他执行方式:

public void verifyPermissions(String user, String level2, String Folder) {

        if (user.equalsIgnoreCase("ABC_Username")) {
            verifyXYZPermission(Folder);

            verifyNoPermissionToDelete();

        }

        else if (user.equalsIgnoreCase("DEF_Username") || user.equalsIgnoreCase("GHI_Username")
                || user.equalsIgnoreCase("JKL_Username") || user.equalsIgnoreCase("MNO_Username")
                || user.equalsIgnoreCase("PQR_Username") || user.equalsIgnoreCase("STU_Username")
                || user.equalsIgnoreCase("VWX_Username")) {

            if (user.equalsIgnoreCase("GHI_Username")) {

                verifyNoPermissionToCreate(user, Folder, level2);

                verifyNoPermissionToUpdate(Folder);

            } else {

                verifyCreatePermission(level2);

                verifyPermisssionToUpdate(Folder);
            }
            }
            }

标签: java

解决方案


这是一种方法:在块Set<String>之前使用可能的用户名值定义 a ,并对其进行检查。if请注意所有字符串是如何小写以避免麻烦的:

Set<String> userNames = new HashSet<>();
userNames.add("def_username");
userNames.add("ghi_username");
userNames.add("jkl_username");
userNames.add("mno_username");
userNames.add("pqr_username");
userNames.add("stu_username");
userNames.add("vwx_username");

// assuming `user` is non-null
user = user.trim().toLowerCase();

if (user.equals("abc_username")) {
    verifyXYZPermission(Folder);
    verifyNoPermissionToDelete();
} else if (userNames.contains(user)) {
    if (user.equals("ghi_username")) {
        verifyNoPermissionToCreate(user, Folder, level2);
        verifyNoPermissionToUpdate(Folder);
    } else {
        verifyCreatePermission(level2);
        verifyPermisssionToUpdate(Folder);
    }
}

推荐阅读