java - 优化 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);
}
}
}
解决方案
这是一种方法:在块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);
}
}
推荐阅读
- baseadapter - BroadcastReceiver 替换 GridView 中的单个单元格
- rest - 事件驱动的微服务架构
- java - 想要通过单击jsp中的按钮来更新特定行的列
- vb.net - 如何在运行时使用键盘在 VB.net 中编辑 DataGridView 单元格?
- python - PLC modbus [WinError 10054]:现有连接被远程主机强行关闭
- android - 为什么Activity返回前台后Bitmap会被回收?
- react-native - React-Native:从 Reducer 返回后未获取状态数据
- ios - 如何停止特定 ViewController 上的“screen_view”事件
- java - 在循环 200 万次的循环中使用最终字符串的最有效方法是什么?
- mysql - 案例条件MySql中的内部连接表