请问这段代码有什么问题?完全看不出有什么异常。。

2018-12-24 15:02:27 +08:00
 momuou
4846 次点击
所在节点    程序员
45 条回复
momuou
2018-12-24 15:03:34 +08:00
// 业务类型
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", "业务类型不明,请联系管理员");
}
he583899772
2018-12-24 15:06:50 +08:00
一大推 if else 看到就头痛
wsyzzz
2018-12-24 15:08:52 +08:00
跑一下看看报错呗,,看文本调试也太头疼了
jingyulong
2018-12-24 15:10:17 +08:00
现在哪里有报错吗?
ukipoi
2018-12-24 15:13:25 +08:00
countTypeId = " null";
这样子是不是就不符合要求了
Vegetable
2018-12-24 15:14:16 +08:00
不是很合理哦,你上边是个 if,是不是"null "都能过?
本身这个数据是哪来的我不要清楚,不过你是不是应该在 trim 后判空?
Vegetable
2018-12-24 15:15:03 +08:00
@Vegetable *要=>是
jcsmallming
2018-12-24 15:15:27 +08:00
是有报错还是运行结果不符合预期?你直接贴这一段代码上来没有补充说明真的很难看啊
misaka19000
2018-12-24 15:19:05 +08:00
这个代码写的好烂,建议先重构下
jorneyr
2018-12-24 15:23:14 +08:00
这种数据校验, 我们会选择使用 hibernate validator 使用 @Valid 自动处理, 写代码太过麻烦
nananqujava
2018-12-24 15:25:02 +08:00
我靠 又是这种箭头型代码,这种代码也能通过审核?
pipicat
2018-12-24 15:47:31 +08:00
每次校验的方法 StringUtils.isNotBlank(value) && !"null".equals(value) 应该可以合并成一个函数吧。而且代码都是有规律的,可以用反射字段名统一添加吧,搜了一下 @jorneyr 说的 hibernate validator 应该可以,原理应该类似
kyuuseiryuu
2018-12-24 15:47:36 +08:00
这个令人头痛的代码本身就是“异常”
momuou
2018-12-24 16:06:38 +08:00
@wsyzzz 不是报错--是想优化一下这种写法。。。
momuou
2018-12-24 16:07:51 +08:00
@jcsmallming 这种写法肯定是不符合预期的,其实一直都是写 if()else{return}这种的,可是参数多了就觉得麻烦,而且最后还是会走到事务里面去.
momuou
2018-12-24 16:09:25 +08:00
@misaka19000 这本身就是一段烂代码,就是想请教一下你怎么重构,瞎子都知道这种代码难维护,可是你要怎么写才能符合这种写法又优雅呢?
momuou
2018-12-24 16:10:09 +08:00
@kyuuseiryuu 就是本着我写着爽,维护的人想砍我的心态。。所以才放上来的。
momuou
2018-12-24 16:11:00 +08:00
@jorneyr 谢谢,我去查询一下。
james2013
2018-12-24 16:14:42 +08:00
问题:
1)判断为空完善,应改为!"null".equals(countTypeId.trim())
2)if else 嵌套太深,如下减少层级到 1 层:
if (!StringUtils.isNotBlank(countTypeId)) {
return;
}
if (!StringUtils.isNotBlank(dealDate)) {
return;
}
...
momuou
2018-12-24 16:20:04 +08:00
好吧,大背景就是本来写了一段自我感觉良好的代码,可是硬盘丢失了,代码只能重写,却写出这种后人难以维护的代码,感觉不太好,所以发上来请教一下各位。。刚刚上了个厕所,好像又记起来之前怎么写的了。
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;

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/520478

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX