|
1
// 业务类型
if (StringUtils.isNotBlank(countTypeId) && !"null".equals(countTypeId)) { paramMap.put("countTypeId", countTypeId.trim()); // 日期 if (StringUtils.isNotBlank(dealDate) && !"null".equals(dealDate)) { paramMap.put("dealDate", dealDate.trim()); //地市编码 if (StringUtils.isNotBlank(regionCode) && !"null".equals(regionCode)) { paramMap.put("regionCode", regionCode.trim()); if (StringUtils.isNotBlank(payType) && !"null".equals(payType)) { //-支付类型( 0 待确认 1 通过 2 不通过 paramMap.put("payType", payType.trim()); try { int i = dataRecountService.updateDataPayType(paramMap); if (i > 0) { result.put("status", "1"); result.put("msg", "提交成功"); } } catch (Exception e) { logger.error(e.getMessage(), e); result.put("msg", "网络异常,请稍后再尝试。"); } } else { result.put("msg", "选择的支付类型有误,请稍后重试"); } } else { result.put("msg", "请选择确切地市进行查询后再进行审核"); } } else { result.put("msg", "请选择确切日期进行查询后再进行审核."); } } else { result.put("msg", "业务类型不明,请联系管理员"); } |
|
he583899772Dec 24, 2018
2
一大推 if else 看到就头痛
|
|
wsyzzzDec 24, 2018
3
跑一下看看报错呗,,看文本调试也太头疼了
|
|
jingyulongDec 24, 2018
4
现在哪里有报错吗?
|
|
ukipoiDec 24, 2018
5
countTypeId = " null";
这样子是不是就不符合要求了 |
|
VegetableDec 24, 2018
6
不是很合理哦,你上边是个 if,是不是"null "都能过?
本身这个数据是哪来的我不要清楚,不过你是不是应该在 trim 后判空? |
|
8
是有报错还是运行结果不符合预期?你直接贴这一段代码上来没有补充说明真的很难看啊
|
|
9
这个代码写的好烂,建议先重构下
|
|
soleilsDec 24, 2018
11
我靠 又是这种箭头型代码,这种代码也能通过审核?
|
|
pipicatDec 24, 2018
12
每次校验的方法 StringUtils.isNotBlank(value) && !"null".equals(value) 应该可以合并成一个函数吧。而且代码都是有规律的,可以用反射字段名统一添加吧,搜了一下 @jorneyr 说的 hibernate validator 应该可以,原理应该类似
|
|
ChemistDec 24, 2018
13
这个令人头痛的代码本身就是“异常”
|
|
15
@jcsmallming 这种写法肯定是不符合预期的,其实一直都是写 if()else{return}这种的,可是参数多了就觉得麻烦,而且最后还是会走到事务里面去.
|
|
16
@misaka19000 这本身就是一段烂代码,就是想请教一下你怎么重构,瞎子都知道这种代码难维护,可是你要怎么写才能符合这种写法又优雅呢?
|
|
17
@kyuuseiryuu 就是本着我写着爽,维护的人想砍我的心态。。所以才放上来的。
|
|
james2013Dec 24, 2018
19
问题:
1)判断为空完善,应改为!"null".equals(countTypeId.trim()) 2)if else 嵌套太深,如下减少层级到 1 层: if (!StringUtils.isNotBlank(countTypeId)) { return; } if (!StringUtils.isNotBlank(dealDate)) { return; } ... |
|
20
好吧,大背景就是本来写了一段自我感觉良好的代码,可是硬盘丢失了,代码只能重写,却写出这种后人难以维护的代码,感觉不太好,所以发上来请教一下各位。。刚刚上了个厕所,好像又记起来之前怎么写的了。
if (StringUtils.isBlank(countTypeId) || "null".equals(countTypeId)) { // 业务类型 result.put("msg", "业务类型不明,请联系管理员"); } else if(StringUtils.isBlank(dealDate) || "null".equals(dealDate)){ // 日期 result.put("msg", "请选择确切日期进行查询后再进行审核."); }else if(StringUtils.isBlank(regionCode) || "null".equals(regionCode)){ //地市编码 result.put("msg", "请选择确切地市进行查询后再进行审核"); }else if(StringUtils.isBlank(payType) || "null".equals(payType)){ //-支付类型( 0 待确认 1 通过 2 不通过 result.put("msg", "选择的支付类型有误,请稍后重试"); }else{ paramMap.put("countTypeId", countTypeId.trim()); paramMap.put("dealDate", dealDate.trim()); paramMap.put("regionCode", regionCode.trim()); paramMap.put("payType", payType.trim()); int i = dataRecountService.updateDataPayType(paramMap); if (i > 0) { result.put("status", "1"); result.put("msg", "提交成功"); } } return result; |
|
annielongDec 24, 2018
21
反正个人写条件两种用 if,三种以上就换 switch,不过返回值提示这种可以定义字典,或者数组,可以统一维护
|
|
23
不会贴图,所以没什么贴上来没什么格式。。感谢提建议的各位。
|
|
24
写了一段,供你参考。
public class Test { class Model { @Warning("业务类型不明,请联系管理员") public String countTypeId; @Warning("请选择确切日期进行查询后再进行审核") public String dealDate; @Warning("请选择确切地市进行查询后再进行审核") public String regionCode; @Warning("选择的支付类型有误,请稍后重试") public String payType; } public void Test(){ Model model = new Model(); HashMap<String,String> result = new HashMap<>(); HashMap<String,String> paramMap = new HashMap<>(); Field[] declaredFields = model.getClass().getDeclaredFields(); boolean pass = true; for (Field field:declaredFields){ if (field.getAnnotation(Warning.class)!=null){ field.setAccessible(true); try { Object o = field.get(model); if (!isVaild(String.valueOf(o))) { pass = false; result.put(field.getName(),field.getAnnotation(Warning.class).value()); break; } else { paramMap.put(field.getName(),String.valueOf(o).trim()); } } catch (IllegalAccessException e) { e.printStackTrace(); } } } if (pass) { try { int i = dataRecountService.updateDataPayType(paramMap); if (i > 0) { result.put("status", "1"); result.put("msg", "提交成功"); } } catch (Exception e) { logger.error(e.getMessage(), e); result.put("msg", "网络异常,请稍后再尝试。"); } } else { } } public boolean isVaild(String str){ return StringUtils.isBlank(str) && !"null".equals(str); } } @Target(FIELD) @Retention(RUNTIME) @interface Warning{ String value() default ""; } 具体细节可能还要调一下。 |
|
lihongjie0209Dec 24, 2018
25
|
|
lihongjie0209Dec 24, 2018
26
|
|
27
|
|
laoyurDec 24, 2018
28
看到这样排版还肯帮忙的,是真的热心肠了
|
|
lihongjie0209Dec 24, 2018
29
@laoyur 主要是想试一下 gif 录制工具 还有 在 v2 回复图片, 后者看来失败了
|
|
devilyaosDec 24, 2018 via iPhone
30
counttypeid 为 null (有空格)会进下面的逻辑吧?此时应该条件匹配不上?或者 null 是大写,大小写匹配可以用 equalsignore 嘛……
|
|
31
//抛块砖头,帮你重构了一下,java 语法不太熟,将就着写吧
//重复的动作首先要封装一下 bool check(string typeName string typeValue) { if (StringUtils.isBlank(typeValue) || "null".equals(typeValue)) { return false; } paramMap.put(typeName, typeValue.trim()); return true; } ... //try catch 可以简化分支处理 try { if (!check(countTypeId)) throw Exception("your message"); if (!check(dealDate)) throw Exception("your message"); if (!check(regionCode)) throw Exception("your message"); if (!check(payType)) throw Exception("your message"); int i = 0; try { i = dataRecountService.updateDataPayType(paramMap); }catch (Exception e) { logger.error(e.getMessage(), e); throw Exception("网络异常,请稍后再尝试。" ); } if (i > 0) { result.put("status", "1"); result.put("msg", "提交成功"); } }cache(Exception e) { result.put(e.getMessage()); } |
|
33
@lihongjie0209 谢谢
|
|
tingfangDec 25, 2018
36
这种 ifelse 建议使用卫语句。
|
|
tingfangDec 25, 2018
37
if(!conditionA){
return; } if(!conditionB){ return; } if(!conditionC){ return; } ... return; |
|
icopDec 25, 2018
38
debug 不行吗? IDEA 的 DEBUG 啊。
|
|
aa514758835Dec 25, 2018
39
这是 java 吗~ 我看不懂
|
|
40
|
|
41
你把以上内容封装成一个对象,然后用 valid 验证的框架去做验证。验证内容都注解写就好了。。。
|