Ниже метод имеет цикломатическую сложность 13 Я следую некоторому подходу, используя тройной оператор для малых, если иначе, но для длинного кода наилучший подход какой шаблон дизайна использовать для получения результата, если условие else или каким-либо другим способом чтобы уменьшить цикломатическую сложность, так как sonarQube показывает ошибку циклической сложности. Я новичок помочь мне undersatnding процессЛучший способ для сокращения сложности циклотрона
@RequestMapping(value = "/submitUser", method=RequestMethod.POST)
public String submitUser(@ModelAttribute User userBean,Locale locale, RedirectAttributes redirectAttributes, HttpSession session, Model model) {
boolean status = false, isAdd = false;
String imagePath = "", task = "";
isAdd = userBean.getAdd();
/*if(isAdd) {
task = "add";
} else { // replace this by task=isAdd?"add":"edit";
task = "edit"; //
}*/
GlobalLogger.logApplicationDebugLog("Received request to " + task + " user ", LOGGER);
if (session != null && session.getAttribute("UserImagePath") != null) {
imagePath = session.getAttribute("UserImagePath").toString();
}
int currentUserId = Integer.parseInt(session.getAttribute(SessionKeyConstants.USER_ID).toString());
try {
status = iuser.submitUser(userBean, imagePath,currentUserId);
if(isAdd) {
if (status) {
GlobalLogger.logInfoLog("User "+userBean.getUserName()+" has been " + task + "ed successfully", LOGGER);
redirectAttributes.addFlashAttribute("successMsg", messageSource.getMessage("operationMsg.addUserSuccess", new String[] {userBean.getEmpEmail()}, locale));
return "redirect:/users.action";
} else {
GlobalLogger.logApplicationDebugLog("Error in adding user "+userBean.getUserName(), LOGGER);
redirectAttributes.addFlashAttribute("errorMsg", messageSource.getMessage("operationMsg.addUserFailure", new String[] {}, locale));
redirectAttributes.addFlashAttribute("isAdd", isAdd);
redirectAttributes.addFlashAttribute("userBean", userBean);
return "redirect:/addUser.action?isAdd=true";
}
} else {
if (status) {
GlobalLogger.logInfoLog("User "+userBean.getUserName()+" has been " + task + "ed successfully", LOGGER);
redirectAttributes.addFlashAttribute("successMsg", messageSource.getMessage("label.addSuccessMsg", new String[] {userBean.getFirstName()}, locale));
return "redirect:/users.action";
} else {
GlobalLogger.logApplicationDebugLog("Error in adding user "+userBean.getUserName(), LOGGER);
redirectAttributes.addFlashAttribute("errorMsg", messageSource.getMessage("label.addFailedMsg", new String[] {userBean.getFirstName()}, locale));
redirectAttributes.addFlashAttribute("isAdd", isAdd);
redirectAttributes.addFlashAttribute("userBean", userBean);
return "redirect:/addUser.action?isAdd=false";
}
}
} catch (UserException e) {
GlobalLogger.logApplicationDebugLog("User Name or Employee Id exists for user "+userBean.getUserName(), LOGGER);
redirectAttributes.addFlashAttribute("userBean", userBean);
redirectAttributes.addFlashAttribute("errorMsg", messageSource.getMessage(e.getErrorcode(), new String[] {}, locale));
return "redirect:/addUser.action?isAdd=true";
}
}
http://refactoring.com/catalog/extractMethod.html – assylias
@assylias я не мог понять, не могли бы вы мне помочь, видя выше код, который я отправил – vaib