代码之家  ›  专栏  ›  技术社区  ›  Pops Atula

返回类型为void的方法是否应使用返回语句?

  •  17
  • Pops Atula  · 技术社区  · 15 年前

    我知道有时使用 return; 可以在Java中提供有用的用途,例如在保护中:

    public void foo(Bar bar) {
        if(bar == null)
            return;
    
        // bar is not null, go ahead and do stuff with it
    }
    

    但是如果只到达返回类型的方法的末尾呢 void ?例如,

    public void printMenu() {
        System.out.println("Print out some boilerplate info here, line 1.");
        System.out.println("Print out some boilerplate info here, line 2.");
        System.out.println("Print out some boilerplate info here, line 3.");
    
        return;
    }
    

    除了纯粹的风格偏好外,是否有任何理由支持或反对包括这一点? 返回; ?如果是,它们是什么?

    编辑:嗯,很快就得到了答复。总结以下15个答案:“不”。

    11 回复  |  直到 15 年前
        1
  •  47
  •   ChssPly76    15 年前

    也许你是按代码付款的?

    另外,没有理由在最后放一个空的回报。

        2
  •  10
  •   Thomas Owens    15 年前

    我自己避开他们。这只是一行无用的代码。事实上, PMD 有一条规则可以检查这些无用的东西 return 声明。

        3
  •  4
  •   ZoogieZork    15 年前

    即使从风格的角度来看,我也没有理由在结尾处有悬而未决的回报。毕竟,你知道它会回来,因为那里有一个尾撑…

        4
  •  1
  •   John Scipione    15 年前

    纯粹基于样式的问题,完全没有区别(也许是额外的ASM指令,但谁在乎呢?).你觉得更舒服的人做什么,或者遵循之前在守则中确立的惯例。

        5
  •  1
  •   Lars Tackmann    15 年前

    我说永远不要这样做。返回语句 无效 函数只是为了打破语句的逻辑。如果您开始这样做,那么您将向代码的读者发送一个令人困惑的语句,人们会认为您计划使用一些 如果 你忘记的声明。始终追求可读性。

        6
  •  1
  •   Chip Uni    15 年前

    一个想法是 structured programming 是:

    每个例程都应该有一个入口点和一个出口点。

    如果您订阅了该策略,则 return 语句指示退出例程的唯一方法。

    在实践中,这一策略并不能使代码更清晰,而且自20世纪70年代以来,它一直被忽略。如果在其他例程中允许使用多个返回语句,那么在最有意义的地方应该允许使用零返回语句。

        7
  •  1
  •   Ravi Wallau    15 年前

    我认为不必要的陈述只是噪音,所以我不会在最后加上回报。也就是说,如果有什么东西不满足我的要求,或者更好的是,我将抛出IllegalArgumentException异常,那么我将在方法的开头添加返回。

        8
  •  0
  •   user12786    15 年前

    在您的示例中,结尾的“返回”是个人、团队或组织风格的问题。我个人更愿意做一个明确的回报。

        9
  •  0
  •   Ikke    15 年前

    我认为除了个人偏好,没有什么不同。我认为第一个案例是合法的。否则,您应该将语句打包到一个大的if语句中。

    最后一个例子返回是多余的。

        10
  •  0
  •   ccook    15 年前

    我会从一致性的角度来避免它。它更容易永远不放,比记住总是添加它。

        11
  •  0
  •   fastcodejava    15 年前

    它不起任何作用,但是如果你想这样做(因为你团队中的每个人都这样做,或者出于任何原因),你可以这样做。