参数验证其实可以更简明一点

原创
2012/07/18 21:10
阅读数 589

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

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, 感兴趣的可以点击这里 查看更多范例.

展开阅读全文
加载中
点击加入讨论🔥(8) 发布并加入讨论🔥
8 评论
1 收藏
0
分享
返回顶部
顶部