分享
三行代码  ›  专栏  ›  技术社区  ›  Rahul

优化if语句中的多个或条件 - Optimize the several multiple OR conditions in IF statement

  •  0
  • Rahul  · 技术社区  · 1 周前

    我是Java新手,尝试学习一种更好的编码方法。请告诉我,如果我可以通过调用方法中传递的用户名来替换下面的其他语句中的多个或多个条件。

    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);
                }
                }
                }
    
    3 回复  |  直到 1 周前
        1
  •  4
  •   Óscar López    1 周前

    有一种方法:定义 Set<String> 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);
        }
    }
    
        2
  •  2
  •   springborn    1 周前

    使用switch case语句。 在case块中,您可以为每个用户执行相应的权限。

    https://www.w3schools.com/java/java_switch.asp

    user_lc=user.toLowerCase();
    switch (user_lc){
      case "abc_user":
        //execute code
      break;
      case "def_user":
        //execute code
      break;
    }
    
        3
  •  0
  •   xploreraj    1 周前

    我想这是很自以为是的。我可以想到以下几种方法:

    1. OR 就像你所做的,或者
    2. regex 减少代码行,或
    3. switch-case
    4. 使用A Collection 例如 List Set .

    这都是基于作者的选择。