if-else和if返回之间有什么区别?哪个更好?

时间:2014-05-27 01:19:38

标签: java

这就是我通常编码的方式:

public void foo (int x) {
    if (x == 1) {
        System.out.println("You entered one!");
    } else if (x == 2) {
        System.out.println("You entered two!");
    } else if (x == 3){
        ................. and so on.

我意识到以下内容也会产生相同的结果:

public void foo (int x) {
    if (x == 1) {
        System.out.println("You entered one!");
        return;
    }
    if (x == 2) {
        System.out.println("You entered two!");
        return;
    }
    if (x == 3) {
        ...... and so on.

哪一个会更好用,即使它们产生相同的结果,为什么? 我意识到有一个switch语句。

2 个答案:

答案 0 :(得分:0)

在这种情况下,几乎没有性能差异。它归结为可读性。

我个人更喜欢开关:

switch(x) {
    case 1:
        System.out.println("You entered one!");
        break;
    case 2:
        System.out.println("You entered two!");
        break;
    case 3:
        System.out.println("You entered three!");
        break;
}

答案 1 :(得分:-2)

这是一个“主要基于意见”的问题,但主要意见是:

  1. if / else(或者更重要的是,返回后退)更好,因为在方法中间退出是不好的。在中间退出是很糟糕的,因为代码应该用嵌套块({})和设置和镜像删除逻辑的逻辑进展来构造,并且中间的返回可以导致绕过删除逻辑,经常引入微妙的错误。
  2. 如果/ return更好,因为在方法中间退出是“更干净”。如果该方法被设计为落入返回,则趋向于获得越来越深的嵌套条件,因为该方法中的逻辑绕过了由嵌入式返回处理的“错误”或“快速退出”情况。 。这可能会导致细微的错误,并使代码变得混乱。
  3. 显然,两者都不对。或者他们可以??在某些情况下,第一个论点将占据主导地位,在其他情况下则是第二个论点。任何声称存在一种强硬规则的人(不仅仅是重述一种语言限制)只是嘲讽一些从未真正做过真正编程的“专家”。