在 Java 中使用 Validate 相对于手动错误检查有什么好处?

问题描述 投票:0回答:3

我正在修改一些代码,并且我看到一致使用“验证”来进行错误检查。

Validate.notNull(x, "x cannot be empty")
if(null != x){...}
之间有什么区别?其中一个相对于另一个有什么优势?

编辑:我正在使用 org.apache.commons.lang.Validate

java validation error-handling
3个回答
4
投票

编辑:假设您指的是 org.apache.commons.lang.Validate


第一个说用空参数调用方法是完全非法的,这是使用该方法的程序员的编码错误。

第二个只是说根据 x 是否为 null 会有不同的行为。

如果你真的这样做的话,它就变成了一个可读性问题:

if(null != x)
{
//...
} else {
  throw new IllegalArgumentException( "x cannot be empty");
}

如果要的话,正文有多长?为什么非法调用方法的结果与检查是否非法调用物理分离?一旦您添加更多具有各种不同法律状态的参数,其他人就很难理解。如果您从一开始就明确拒绝所有已知绝对非法的调用,那么对其他程序员会更加友好。


0
投票

Validate
不属于Java API,您可能正在使用框架或其他人的类来进行验证。

关于好处,这取决于

Validate.notNull
在内部做什么,希望它与其名称一致,并且只做所说的事情,检查值是否不为空。一个好处是它允许您指定错误消息,这样您就可以减少代码的冗长性,但这又取决于它对该消息的处理方式,它可能会将它们添加到消息堆栈中或引发未经检查的异常。


0
投票

验证在某些一般情况下是很好的。它的缺点是,如果您需要提供自定义消息(连接动态数据),即使不需要该消息,它也会每次运行。

第二种方法更好,因为只有在需要时才会评估字符串连接。

© www.soinside.com 2019 - 2024. All rights reserved.