반응형
try {
JSONObject obj = (JSONObject) message.send(params);
log.debug("### obj : {}", obj);
System.out.println(obj.toString());
JSONObject jsonObject = (JSONObject) obj;
log.debug("### jsonObject : {}", (JSONObject) obj);
log.debug("### jsonObejct - success_count : {}" , (Long) jsonObject.get("success_count"));
// TODO: 2022-06-11 alert로 전송 성공 및 실패 결과 띄워주기
// {"group_id":"dkdlelrkqt","success_count":1,"error_count":0}
// 리턴 값 중 'success_count'의 값이 1로 오면 전송이 성공인 것을 if문으로 msg에 담아준다.
if ((Long) jsonObject.get("success_count") == 1) {
mav.addObject("msg", "전송 성공");
} else if ((Long) jsonObject.get("success_count") == null) {
mav.addObject("msg", "전송 실패 - null");
}else {
mav.addObject("msg", "전송 실패");
}
} catch (CoolsmsException e) {
System.out.println(e.getMessage());
System.out.println(e.getCode());
} finally {
}
mav.addObject("url", "/management/management");
// mav.setViewName("management/management");
mav.setViewName("/redirect");
// TODO: 2022-06-11 try에서 담긴 model 값을 가져와야 함
log.debug("### mav : {}", mav);
log.debug("### mav.msg : {}", mav.getModel());
return mav;
}
프로젝트에서 위와 같은 코드를 사용했다. 여기서 문제가 try에서 if로 받은 값을 Veiw에서 사용하려고 했는데 try/catch에서 넣은 msg 값은 try / catch가 끝나고 나서 return할 때 값을 가져오지 못 했다. 그래서 try에서 각 if마다 리턴 값을 넣어주자 해서 아래와 같은 코드를 만들었다.
if ((Long) jsonObject.get("success_count") == 1) {
mav.addObject("msg", "전송 성공");
mav.addObject("url", "/management/management");
mav.setViewName("/redirect");
return mav;
} else if ((Long) jsonObject.get("success_count") == null) {
mav.addObject("msg", "전송 실패 - null");
mav.addObject("url", "/management/management");
mav.setViewName("/redirect");
return mav;
}else {
mav.addObject("msg", "전송 실패");
mav.addObject("url", "/management/management");
mav.setViewName("/redirect");
return mav;
}
이렇게 각 if마다 return을 넣어줬는데 뭔가 반복되는 느낌이 이건 별로인 코드라고 말 해주는 것 같았다. 커뮤니티에서 질문을 했는데 댓글에서 참고 사항을 알려주어 적용해서 결과적으로 코드를 아래와 같이 바꿔주었다.
boolean isEnd = false;
if ((Long) jsonObject.get("success_count") == 1) {
mav.addObject("msg", "전송 성공");
mav.addObject("url", "/management/management");
isEnd = true;
} else if ((Long) jsonObject.get("success_count") == null) {
mav.addObject("msg", "전송 실패 - null");
mav.addObject("url", "/management/management");
isEnd = true;
}else {
mav.addObject("msg", "전송 실패");
mav.addObject("url", "/management/management");
isEnd = true;
}
if (isEnd) {
mav.setViewName("/redirect");
return mav;
}
isEnd를 false로 초기화하고 각 if마다 true 값을 넣어주었다. if문이 다 끝나고 isEnd에서 최종적으로 반복되는 return문을 수행하도록 바꿔주었다. 한 층 더 나은 코드가 되었다.
또, 다른 방법으로 찾아보니 if를 인터페이스화 해서 가능하면 최대한 덜 사용하도록 바꿔 줄 수도 있는 것 같다. 조만간 관련 예제도 찾아 연습해 봐야겠다.
반응형
'Project > 소경관' 카테고리의 다른 글
[소경관] : 카카오 OCR 사용 (0) | 2022.06.15 |
---|---|
[소경관] : 인식률 안 좋은 테서렉트 대체 방안을 마련하다. (0) | 2022.06.13 |
[소경관] : 아이디 찾기 및 RestAPI로 문자 사용하기 및 남은 기능 체크 (0) | 2022.06.10 |
[소경관] : Validator와 공지사항 전파 (0) | 2022.06.08 |
[소경관] : 비밀번호 찾기 구현하기 (0) | 2022.06.07 |
댓글