如果是其他的最好的写作方式

时间:2011-03-03 20:39:35

标签: if-statement

这是否有条件:

if (x > 1)
//some logic
else if (y >47)
//some logic
else
//default logic

这是否总是转化为:

if (x >1)
{some logic}
else{
  if (y >47)
    {some logic}
    else
    {default logic}
}

或者有例外吗?如果没有例外,那么最好的做法是如何写这个?

8 个答案:

答案 0 :(得分:4)

这些形式在逻辑上是等同的,是的。我认为最好的做法是编写代码,使其尽可能易于理解。

考虑:

if (A) { // code #1 }
else if (B) { // code #2 }
else { // code #3 }

然后是真值表

A B code
T T #1    *
T F #1    *
F T #2
F F #3

相同
if (A) { // code #1 }
else {
    if (B) { // code #2 }
    else { // code #3 }
}

*注意:大多数语言会使这些案例短路而根本不评估B,但有些语言会这样做。但这并不影响逻辑。

答案 1 :(得分:1)

不,不一定。在许多语言中,if语句中只会考虑一个语句而不使用大括号。如果您使用大括号,则其中的所有语句都将被考虑在内。

答案 2 :(得分:1)

大概你要问的是else是否总是与最近的if相关联,而else尚未找到case

如果是这样,那么对于我所知道的所有语言,答案都是肯定的。

至于替代品,这取决于。例如,某些语言允许在switch或{{1}}语句中使用任意表达式。如果这是允许的话,它通常比if / then / else梯子更好,除非可能的选择数量非常小。

根据您在条件中测试的内容,您可能可以使用多态类型(假设您的语言支持)。

答案 3 :(得分:0)

易于理解的代码将是:

if (x >1)
{some logic}
elseif (y >47)
{some logic}
else
{default logic}

(您原来的帖子错过了})。

答案 4 :(得分:0)

很大程度上取决于您使用的语言。有些人使用'else'来终止'if'的上下文(Cobol浮出水面),其他人使用'if'后面的第一个语句的结尾来终止它的上下文(所有C和Java风格的语言)。

在不知道特定语言的情况下,一个好的通用规则是始终使用显式终止符,在本例中{}显式声明范围。

答案 5 :(得分:0)

在某些语言中确实如此。 (几乎所有高级语言都是这样的;否则,if,elseif或elsif作为关键字表示“后续条件语句”中的某些内容。)在其他一些语言中,您需要使用大括号来表示范围。

最佳实践完全取决于您所写的语言,您为之写作的人(工作,学校,您自己)以及魔法烟雾。 (不是真的在魔法烟雾上,但有时它似乎就好了。)

为别人编码时,问问他们最好的方法是做什么。当我为自己编写代码时,我发现许多花括号使我的代码不易理解,所以我喜欢在我的大部分代码中使用else if语句。有些语言(如Java)经常在自己的文档中使用它,这通常是“接受”标准的一个很好的标志。

答案 6 :(得分:0)

  

是否有如何写这个的最佳做法?

如果您拥有两个if条件,那么这两种形式都没有多大优势。除此之外,我肯定会采用扁平的左对齐形式。具有三个以上缩进级别的代码很难遵循,并且几乎总是表明需要将某些内容分解为多种方法。如果它只是一系列if条件的连续序列,则没有理由用大压痕来表示复杂性。

答案 7 :(得分:0)

这应该是优化的代码:

if(x> 1)
{做某事并返回}

if(y> 47)
{做某事并返回}

做点什么