Java方法最佳实践

时间:2018-05-09 18:42:34

标签: java methods

考虑将对象作为参数的方法。在方法中检查对象是否为空是一个好习惯,还是应该在调用该方法之前检查它。我觉得如果有人以后使用该方法,如果他们为参数传递null,该方法将无法传达它丢失的内容。请从以下方法中建议最好的方法。

方法1:

void method(Object obj1, Object obj2)
{
  if(obj1!=null && obj2!=null
  {}
}

方法2:

void method(Object obj1, Object obj2)
{
  //logic
}

方法3:

void method(Object obj1, Object obj2)
{
  if(obj1 ! =null && obj2 !=null)
  {//logic}

  throw exception();
}

2 个答案:

答案 0 :(得分:1)

在这种情况下你可以做一些事情。我建议做的第一件事是使用jsr305 findbugs或类似的(@Nullable@Nonnull)来明确地将参数或方法标记为接受或返回null。如果您正确配置了IDE,它将了解这些并尝试阻止空指针。

public void foo(@Nonnull Bar bar) {

如果在请求nonnull时参数为null,则可以执行的另一件事是抛出IllegalArgumentException。这将使应用程序崩溃,并且责任将归于开发人员。

    if (bar == null) throw new IllegalArgumentException("bar cannot be null");

有一些库有这方面的方法。例如Guava的Preconditions和Commons-Lang的Validate。他们还有其他验证方法,例如范围和状态。

Java 8还有一个方法Objects.requireNonNull()

    Objects.requireNonNull(bar);
    Preconditions.checkNotNull(bar);
    Validate.notNull(bar);

答案 1 :(得分:-1)

在将参数传递给方法之前检查参数是否为空必须在客户端解决。

关于方法编写的最佳实践:我认为对传递参数的有效性不做任何假设是一种好习惯。如果您的方法无法在传递空参数的情况下运行,则应抛出IllegalArgumentException。