在Java中检查有效性

时间:2018-06-23 03:37:32

标签: validation methods nullpointerexception assertions assertion

我听说,优良作法是检查公共方法参数的有效性,并在无效的情况下抛出异常。我还听说您应该使用断言检查私有方法的参数。

我有几个问题:

您是否应该将具有多个字段的对象传递给私有方法?

如果这样做,是否应该先检查public方法中所有字段的有效性,还是在使用时进行检查?

私有方法中的断言应该仅用于检查参数,还是在对象为null并尝试调用如下所示方法的情况下使用?

A.doSomething()

1 个答案:

答案 0 :(得分:1)

  

您是否应该将具有多个字段的对象传递给私有方法?

这样做没有内在的错误,坏处或特殊之处。如果您尝试避免将复杂的对象传递给私有方法,则会发现自己受到限制。

  

如果这样做,是否应该先检查public方法中所有字段的有效性,还是在使用时进行检查?

这完全取决于您。

如果提前检查将避免做很多不必要的工作,那么早检查而不是晚检查可能是一个好主意。 (如果您一开始就知道输入的内容无效,那么就不需进行大量CPU工作或长时间的网络通话!)

但是,您并不总是知道所获得的信息是无效的,因此在某些情况下可能无法立即进行检查。

  

私有方法中的断言应该仅用于检查参数,还是在对象为null并尝试调用如下所示方法的情况下使用?

通常使用Asserts来确保您的逻辑正确,而不是输入正确。假设您确定某种方法中的逻辑永远不会返回负数,则可以放入一个断言,如果这样做则将警告您,这表明实现或设计中有错误。您应该使用“异常”来捕获无效输入。