Guava 之 Preconditions

重构 · intonormal · Created at · 1169 hits
41

Preconditions是Guava提供的用于进行代码校验的工具类,其中提供了许多重要的静态校验方法,用来简化我们的代码,并确保代码符合我们的期望,并且能够在不符合校验条件的地方,准确的为我们显示出问题所在。

Precondtions的由来

在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常流程执行下去。对于可预知的一些数据上的错误,我们一定要做事前检测和判断,来避免程序流程出错,而不是完全通过错误处理来保证流程正确执行,毕竟错误处理是比较消耗资源的方式。在平常情况下我们对参数的判断都需要自己来逐个写方法判断,代码量不少并且复用性不高。举例如下:

Preconditions的实现

Preconditions主要是提供标准的静态校验方法,提升代码可读性,提高代码复用率。采用Guava的Preconditions改写,如下。从图看出,代码行数,可读性明显增强。

Preconditions接口

方法声明(不包括额外参数) 描述 检查失败时抛出的异常
checkArgument(boolean) 检查boolean是否为true,用来检查传递给方法的参数。 IllegalArgumentException
checkNotNull(T) 检查value是否为null,该方法直接返回value,因此可以内嵌使用checkNotNull.。 NullPointerException
checkState(boolean) 用来检查对象的某些状态。 IllegalStateException
checkElementIndex(int index, int size) 检查index作为索引值对某个列表、字符串或数组是否有效。index>=0 && index<size * IndexOutOfBoundsException
checkPositionIndex(int index, int size) 检查index作为位置值对某个列表、字符串或数组是否有效。index>=0 && index<=size * IndexOutOfBoundsException
checkPositionIndexes(int start, int end, int size) 检查[start, end]表示的位置范围对某个列表、字符串或数组是否有效* IndexOutOfBoundsException

Precondtions实现亮点

Preconditions的实现比较简单,也没有较高深的手段。其中,有一个支持不定参数的函数format(), 类似C语言的va_list。

总结

Guava的Preconditions是一个基础工具类,直接导入库接口,即 import com.google.common.base.Preconditions;
攻城狮们快快用起来吧!


「软件匠艺社区」旨在传播匠艺精神,通过分享好的「工作方式」和「习惯」以帮助程序员更加快乐高效地编程。
No Reply at the moment.
需要 Sign In 后回复方可回复, 如果你还没有账号你可以 Sign Up 一个帐号。
Related Topics
3
重构horance • Last by uxyheaven Replied at
2
3
重构horance • Last by leomustafa Replied at
5
3
重构horance • Last by sidan001 Replied at
1
41
重构intonormal • Created at