博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
参数验证其实可以更简明一点
阅读量:7234 次
发布时间:2019-06-29

本文共 573 字,大约阅读时间需要 1 分钟。

hot3.png

最近在尝试重构一个老系统的代码, 阅读过程中经常发现对方法参数值进行校验的逻辑. 它们看上去会是这样:

if (arg1 == null) {    throw new IllegalArgumentException("...");

}

if (arg2 == null) {

arg2 = new ....;

}

invoke(arg1,arg2);

if (arg3 <= 0 || arg3 > 10 ) {

throw new IllegalArgumentException("...");

}

...

上面的写法其实问题不大, 但参数一多, 十多行都是, 我就有点看不下去了, 难道不能再简单明了一点吗?( 好吧, 我的代码洁癖又犯了:( )

其实可以写成这样的:

 

invoke(get(arg1).orComplain("..."), get(arg2).orDefault(new ...));

check(arg3).greaterThan(0).lessThanOrEqual(10).orComplain();

嗯, 要是写成这样我就觉得舒坦了, 基于这个思路, 随手写了个实现, 取名叫Guards, 感兴趣的可以 查看更多范例.

转载于:https://my.oschina.net/zhongl/blog/67755

你可能感兴趣的文章
angular 中 cacheFactory 数据传递
查看>>
实时保存数据包实现回溯效果
查看>>
在linux系统上建文件系统,建用户,修改用户所属组,重置用户密码
查看>>
django celery使用
查看>>
关于最近的进度和Docker的消息
查看>>
破解Linux密码
查看>>
12月19日课程笔记 PATH与文档操作命令
查看>>
Exchange 2003 发生下载通讯薄错误,如何解决?
查看>>
web应用防火墙(WAF)的安全原理与技术分析
查看>>
playbook与交互式
查看>>
linux JIRA安装
查看>>
OfficeScan5.58升级到7.38
查看>>
Struts2的一个入门实例----登录功能
查看>>
Python3 输入和输出
查看>>
免费的 Photoshop Apple Watch 原型设计素材
查看>>
详解DHCP部署WPAD
查看>>
u-boot-1.3.4移植到mini2440+128M nand boot(3)
查看>>
MPLS
查看>>
zabbix监控之模板使用、网络发现及邮件报警功能
查看>>
OC中多线程的创建方法
查看>>