最近项目 controller 比较烦恼 if else 的参数判断,网上找了一些相关的优化文章,但始终没有比较心仪的。但他们都给了我不错的启发,在此非常感谢,嗯,如果也有伙伴在烦恼参数的判断,可以往这边看看
package com.yianjia.common.utils;
import java.util.function.Function;
/**
* @author zengqinghua
*/
public class ParamValid<T> {
private T t;
public ParamValid() {
}
public ParamValid(T t) {
this.t = t;
}
public static <T> ParamValid<T> init(T t) {
ParamValid<T> paramValid = new ParamValid<T>(t);
return paramValid;
}
public Object end(Function<T, Object> function) {
return function.apply(t);
}
/**
* 校验(true的话校验不通过)
*
* @return ParamValid
*/
public ParamValid<T> valid(Function<T, Boolean> function) {
if (function.apply(t)) {
throw new IllegalArgumentException("参数错误");
}
return this;
}
/**
* 校验(true的话校验不通过,错误信息)
*
* @return ParamValid
*/
public ParamValid<T> valid(Function<T, Boolean> function, String message) {
if (function.apply(t)) {
throw new IllegalArgumentException(message);
}
return this;
}
/**
* 校验(true的话校验不通过,错误信息)
*
* @return ParamValid
*/
public ParamValid<T> valid(boolean condition, Function<T, Boolean> function, String message) {
if (!condition) {
return this;
}
if (function.apply(t)) {
throw new IllegalArgumentException(message);
}
return this;
}
}
使用方式
public String validOrderCreateOrEditParam(OrderParam orderParam) {
try {
ParamValid.init(orderParam)
.valid(param -> !"上门提货".equals(param.getTihuoClaim()) && !"不提货".equals(param.getTihuoClaim()), "提货要求错误")
.valid(param -> !systemConfigUtils.songhuoClaimList.contains(param.getSonghuoClaim()), "送货要求错误")
;
} catch (IllegalArgumentException e) {
return e.getMessage();
}
return null;
}
OrderParam 换成你们需要判断的对象就好啦
String errorMsg = validOrderCreateOrEditParam(orderParam);
if (null != errorMsg) {
return R.error(null, errorMsg);
}
当校验不通过的时候,就会返回指定的错误
本文介绍了一种新的参数验证工具ParamValid,该工具通过函数式编程的方式简化了复杂的参数判断逻辑,有效避免了繁琐的if-else语句,提高了代码的可读性和维护性。文章提供了详细的使用示例,展示了如何在实际项目中应用ParamValid进行参数校验。
1516

被折叠的 条评论
为什么被折叠?



