if-else过多的分支可以使用Map代替
用一个Map可以做到,if-else的变化点使用Map的get方法来代替
private HashMap ExceptionMap = new HashMap<String, String>(){ { put("AFE004","unknown"); put("AFE001","unknown"); put("AFE002","unknown"); put("E00006","unknown"); put("E00008","unknown"); put("YQ9999","unknown"); put("EBLN00","unknown"); put("GW3002","unknown"); } };
if-else语句可以简写为
if ("000000".equals(code)) { String content = CommonUtil.getXmlContent(bytes); XmlUtil xmlUtil = new XmlUtil(content); resultDto.setSuccess(true); resultDto.setCode(Constants.CODE_SUCCESS); resultDto.setMessage("交易成功"); resultDto.setSuccessTime(DateUtil.getCurrent(DateUtil.fullPattern)); resultDto.setSuccessMoney(xmlUtil.getNodeValue("//Amount")); } else if ("unknown".equals(ExceptionMap.get(code))) { resultDto.setCode(Constants.CODE_EXCEPTION); resultDto.setMessage("交易结果未知"); } else { resultDto.setSuccess(false);
这边将交易结果未知的错误码设为key,返回值相同,从而可以将这一类结果归结到一个if语句中。