Using more than one nested if/else makes the logic bloated.
How can I simplify the following code.
The more than one nested if/else format and logic is pretty ugly.
payload_dict = {"process": None, "status": None, "taskId": task_id,
"jenkinsJobName": job_name, "msg": None}
if srv_result == "failed":
if result:
logging.info("srv start failed")
response_data = {"errorMsg": "failed", "errorCode": "2", "serviceList": result}
_msg = json.dumps(response_data, ensure_ascii=False)
payload_dict.update(process=1, status=0, msg=_msg)
logging.info(f"Requests:{payload_dict}")
else:
logging.info("srv start failed")
response_data = {"errorMsg": "failed", "errorCode": "2",
"serviceList": "srv start failed"}
_msg = json.dumps(response_data, ensure_ascii=False)
payload_dict.update(process=1, status=0, msg=_msg)
logging.info(f"Requests:{payload_dict}")
else:
if result:
logging.info(f"failed srv:{result}")
response_data = {"errorMsg": "failed", "errorCode": "1", "serviceList": result}
_msg = json.dumps(response_data, ensure_ascii=False)
payload_dict.update(process=1, status=0, msg=_msg)
logging.info(f"Requests:{payload_dict}")
else:
logging.info("deploy success.")
response_data = {"errorMsg": "sucess", "errorCode": "0", "serviceList": result}
_msg = json.dumps(response_data, ensure_ascii=False)
payload_dict.update(process=1, status=1, msg=_msg)
logging.info(f"Requests:{payload_dict}")
-
1Refractor it into methods handling results. The problem here are not nested conditions, but repetitive code.PeterM– PeterM2020年08月02日 10:10:11 +00:00Commented Aug 2, 2020 at 10:10
1 Answer 1
A bit improved.
payload_dict = {"process": None, "status": None, "taskId": task_id, "jenkinsJobName": job_name, "msg": None}
stat = 0
if srv_result == "failed" and result:
logging.info("srv start failed")
response_data = {"errorMsg": "failed", "errorCode": "2", "serviceList": result}
elif srv_result == "failed":
logging.info("srv start failed")
response_data = {"errorMsg": "failed", "errorCode": "2", "serviceList": "srv start failed"}
elif result:
logging.info(f"failed srv:{result}")
response_data = {"errorMsg": "failed", "errorCode": "1", "serviceList": result}
else:
logging.info("deploy success.")
response_data = {"errorMsg": "sucess", "errorCode": "0", "serviceList": result}
stat = 1
_msg = json.dumps(response_data, ensure_ascii=False)
payload_dict.update(process=1, status=stat, msg=_msg)
logging.info(f"Requests:{payload_dict}")
answered Aug 2, 2020 at 10:06
Daeho Ro
13.7k4 gold badges25 silver badges50 bronze badges
Sign up to request clarification or add additional context in comments.
Comments
lang-py