我正在修改一些代码,并且看到一致使用“验证”进行错误检查。
一个与另一个相比有什么区别Validate.notNull(x, "x cannot be empty")
和if(null != x){...}
优势是什么?
编辑:我正在使用 org.apache.commons.lang.Validate
我正在修改一些代码,并且看到一致使用“验证”进行错误检查。
一个与另一个相比有什么区别Validate.notNull(x, "x cannot be empty")
和if(null != x){...}
优势是什么?
编辑:我正在使用 org.apache.commons.lang.Validate
编辑:假设您指的是 org.apache.commons.lang.Validate
第一个说使用空参数调用该方法是完全非法的,这是使用该方法的程序员的编码错误。
第二个只是说有不同的行为取决于 x 是否为空。
如果你真的这样做,它就变成了一个可读性问题:
if(null != x)
{
//...
} else {
throw new IllegalArgumentException( "x cannot be empty");
}
如果要去,那它的身体有多长?为什么非法调用该方法的后果与检查是否非法调用该方法是物理分离的?一旦您添加了更多具有各种不同法律状态的参数,其他人就很难理解。如果您在一开始就明确拒绝每个已知绝对非法的调用,这对其他程序员来说会更友好。
Validate
不属于 Java API,您可能正在使用框架或其他人的类进行验证。
关于好处,它取决于Validate.notNull
内部正在做什么,希望它会与其名称一致,并且只会做所说的,检查值是否不为空。一个好处是它允许您指定错误消息,这样您就可以减少代码的冗长,但这又取决于它对该消息的作用,它可能是将它们添加到消息堆栈或引发未经检查的异常。