返回void函数的else分支

时间:2017-08-02 19:39:47

标签: java

有一个只在返回类型为void的函数中返回的else分支是好还是坏?比如这段代码:

public void myFunc() {
  if (<some condition>) {
      //run some code
  } else {
      return;
  }
}

3 个答案:

答案 0 :(得分:1)

请注意,此主题基于意见,您可能会看到用户与用户之间的许多不同偏好。

对于可读性可维护性,您应该尝试降低代码的复杂性。因此,您还希望减少嵌套。因此,我的首选变体是:

public void myFunc() {
    // Directly leave if condition does not hold
    if (!condition) {
        return;
    }

    // Now do the rest of the code
}

如果您想坚持使用当前版本,那么我建议只删除else部分,因为它只会加剧我的可读性,所以:

public void myFunc() {
    if (condition) {
        // Do something
    }

    // You can always leave a comment if you think
    // that helps a reader, so you can put "Do nothing
    // if condition does not hold" here
}

然而如上所述,我个人更喜欢第一个变体,因为它减少了整个代码的嵌套。

答案 1 :(得分:0)

不,如果您没有进行任何操作,则不需要此else语句。 如果条件不满足,则else语句基本上用于执行操作。如果您没有执行任何操作,最佳做法是不写else语句。

public void myFunc() {
  if (<some condition>) {
      //call FunctionA();
  } else {
      //call FunctionB();
  }
}

在上述情况下,使用else是有效的。但是如果你没有做任何操作,那么这句话就没用了。请阅读Robert Cecil Martin的清洁代码簿。它将帮助您编写干净的代码。

答案 2 :(得分:-1)

来自java.lang.Void class documentation

  

Void类是一个不可实例化的占位符类,用于保存对表示Java关键字Class的{​​{1}}对象的引用。

所以以下任何一项都足够了:

  • 使用void进行参数设置并返回Objectnew Object()
  • 使用null进行参数设置并返回Void
  • 使用您的null进行参数化。

你不能使这个方法NullObject,而其他任何东西都会返回。由于忽略了某些东西,你可以退货。