Java 我们需要什么;否则";“如果是区块,则进行施工”;如果;他回来了吗?

Java 我们需要什么;否则";“如果是区块,则进行施工”;如果;他回来了吗?,java,Java,我知道以下方法也一样,但哪种变体更好,为什么 public boolean method() { if (condition) { return otherMethod(); } else { return true; } } 或 或者这是更好的变体 public boolean method() { return condition ? otherMethod() : true; } 同样的结果

我知道以下方法也一样,但哪种变体更好,为什么

public boolean method() {
      if (condition) {
          return otherMethod();
      } else {
          return true;
      }
}     

或者这是更好的变体

public boolean method() {
     return condition ? otherMethod() : true;
}

同样的结果,不同的风格,只是品味的问题
我更喜欢第二种解决方案,因此返回语句与实际语句相关(如果在本例中是这样的话),并且冗余更少
此外,“Else”语句增加了反转if条件的复杂性,使其可读性降低。

相同的结果,不同的风格,只是口味的问题
我更喜欢第二种解决方案,因此返回语句与实际语句相关(如果在本例中是这样的话),并且冗余更少
此外,“Else”语句增加了反转if条件的复杂性,使其可读性降低。

对此我有一个非常强烈的看法,即在这种情况下使用
Else
块是一种糟糕的风格

一旦逻辑变得足够复杂,使用
else
将极大地妨碍可读性

例如:

if (cond1)
   then return
else
    // Do some processing
    if (cond2)
        then return
    else
         // Do some processing
         if (cond3)
             ....
因此,您最终得到了一个完全不需要的深层嵌套结构,因为它等效于:

if (cond1)
   then return
// Do some processing
if (cond2)
   then return
// Do some processing
if (cond3)
   ....

我对此有一个非常强烈的看法,即在这种情况下使用
else
块是一种糟糕的风格

一旦逻辑变得足够复杂,使用
else
将极大地妨碍可读性

例如:

if (cond1)
   then return
else
    // Do some processing
    if (cond2)
        then return
    else
         // Do some processing
         if (cond3)
             ....
因此,您最终得到了一个完全不需要的深层嵌套结构,因为它等效于:

if (cond1)
   then return
// Do some processing
if (cond2)
   then return
// Do some processing
if (cond3)
   ....

完全一样。这只是一种不同的风格。选择你喜欢的

就我个人而言,通常我更喜欢第二个选项,因为如果代码很长,则不会在块中缩进。在我看来,它更具可读性

想象

public boolean myFunction() {   
    if (test) {
        return true;
    }
    ...
    ...
    ...
    ...
    // Very long code
    return false;
}
而不是

public boolean myFunction() {   
    if (test) {
        return true;
    } else {
        ...
        ...
        ...
        ...
        // Very long code
        return false;
    }
}

完全一样。这只是一种不同的风格。选择你喜欢的

就我个人而言,通常我更喜欢第二个选项,因为如果代码很长,则不会在块中缩进。在我看来,它更具可读性

想象

public boolean myFunction() {   
    if (test) {
        return true;
    }
    ...
    ...
    ...
    ...
    // Very long code
    return false;
}
而不是

public boolean myFunction() {   
    if (test) {
        return true;
    } else {
        ...
        ...
        ...
        ...
        // Very long code
        return false;
    }
}

我更喜欢第二种选择

以下是我为自己辩护的理由:

1) 减少嵌套代码,降低代码复杂度

2) 允许提前归还:

public boolean isValidUser(User user) {
    if (user == null) {
        return false;
    }

    String details = getUserDetails(user);
    if (details == null) {
        return false;
    }

    ...

    return true
}
vs


我更喜欢第二种选择

以下是我为自己辩护的理由:

1) 减少嵌套代码,降低代码复杂度

2) 允许提前归还:

public boolean isValidUser(User user) {
    if (user == null) {
        return false;
    }

    String details = getUserDetails(user);
    if (details == null) {
        return false;
    }

    ...

    return true
}
vs



我认为这只是偏好的问题。我喜欢不使用
else
以获得更好的可读性。对于我来说,第二个选项更易于阅读,并且使用更少的代码。如果您的代码是可读的,并且保存一些行,我认为是最好的选择。第二个代码段的优点是在If语句之外的代码中缩进更少,这可以使代码更可读,如果您在该部分有很多代码,其中可能包含其他构造(循环、更多If语句等)需要进一步缩进的。@khelwood您的意思是
返回条件吗?otherMethod():truereturn(condition | | otherMethod())或可能
返回(!condition | | otherMethod())取决于问题中未指定的if条件的形式。我认为这只是偏好的问题。我喜欢不使用
else
以获得更好的可读性。对于我来说,第二个选项更易于阅读,并且使用更少的代码。如果您的代码是可读的,并且保存一些行,我认为是最好的选择。第二个代码段的优点是在If语句之外的代码中缩进更少,这可以使代码更可读,如果您在该部分有很多代码,其中可能包含其他构造(循环、更多If语句等)需要进一步缩进的。@khelwood您的意思是
返回条件吗?otherMethod():truereturn(condition | | otherMethod())或可能
返回(!condition | | otherMethod())
取决于问题中未指定的if条件的形式。是的,但是为什么不使用
else if
来避免深度嵌套的结构呢?这可能并不总是可能的。例如,在这些条件检查之间,我可能需要做一些处理。我同意安迪的观点。即使
else if
从技术上讲在Java中不是一个关键字,但大多数人基本上都将其视为一个关键字。例如,我的IDE设置为总是使用大括号,除非在else-if中。我只是不喜欢冗余代码,所以即使在这些条件检查之间没有处理,我也总是使用
if
,而不是
else-if
,这是有效的,但相对不常见——我个人不会围绕它构建样式指南。YMMV:)好的,是的,但是为什么不使用
else if
来避免深度嵌套的结构呢?这可能并不总是可能的。例如,在这些条件检查之间,我可能需要做一些处理。我同意安迪的观点。即使
else if
从技术上讲在Java中不是一个关键字,但大多数人基本上都将其视为一个关键字。例如,我的IDE设置为总是使用大括号,除非在else-if中。我只是不喜欢冗余代码,所以即使在这些条件检查之间没有处理,我也总是使用
if
,而不是
else-if
,这是有效的,但相对不常见——我个人不会围绕它构建样式指南。YMMV:)