If statement 最好的写作方式

If statement 最好的写作方式,if-statement,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} } 还是有例外?如果没有例外情况,那么有没有最佳的编写方法?这些表单在逻辑上是等价的,是的。我认为最好的做法是编

这种情况是否:

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}
}

还是有例外?如果没有例外情况,那么有没有最佳的编写方法?

这些表单在逻辑上是等价的,是的。我认为最好的做法是编写代码,使其尽可能容易理解

考虑:

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 }
}

*
NB:大多数语言会在这些情况下短路,根本不会计算B,但有些语言会。但这并不影响逻辑。

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

考虑:

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 }
}

*
NB:大多数语言会在这些情况下短路,根本不会计算B,但有些语言会。但这并不影响逻辑。

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

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

更容易理解的代码是:

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

(而您的原始帖子缺少一个
}
)。

更容易理解的代码是:

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

(而你原来的帖子缺少一个
}
)。

很大程度上取决于你使用的语言。一些使用“else”来终止“if”的上下文(想到Cobol),另一些使用“if”后面的第一条语句的结尾来终止其上下文(所有C和Java风格的语言)


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

很大程度上取决于您使用的语言。一些使用“else”来终止“if”的上下文(想到Cobol),另一些使用“if”后面的第一条语句的结尾来终止其上下文(所有C和Java风格的语言)


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

您可能要问的是,
else
是否总是与最近的
if
关联,而对于后者,
else
尚未找到

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

至于其他选择,这要看情况而定。例如,某些语言允许在其
大小写
开关
语句中使用任意表达式。如果允许的话,它通常比If/then/else阶梯更好,除非可能的选择数量非常少


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

您可能要问的是,
else
是否总是与最近的
if
关联,对于后者,
else
尚未找到

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

至于其他选择,这要看情况而定。例如,某些语言允许在其
大小写
开关
语句中使用任意表达式。如果允许的话,它通常比If/then/else阶梯更好,除非可能的选择数量非常少


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

在某些语言中,它可以。(几乎所有高级语言都是这样的;否则if、elseif或elsif充当关键字,意思与“后续条件语句”类似。)在其他一些语言中,您需要使用大括号来表示范围

最佳实践完全取决于你所用的语言、你为谁(工作、学校、你自己)写作以及魔法烟。(不是真的在魔法烟雾上,但有时看起来是这样的。)


当为其他人编码时,询问他们最好的方式是什么。当我自己编写代码时,我发现很多大括号使我的代码不太容易理解,所以我喜欢在大多数代码中使用
else if
语句。一些语言(如Java)在自己的文档中经常使用它,这通常是“公认”标准的一个很好的标志。

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

最佳实践完全取决于你所用的语言、你为谁(工作、学校、你自己)写作以及魔法烟。(不是真的在魔法烟雾上,但有时看起来是这样的。)

当为其他人编码时,询问他们最好的方式是什么。当我自己编写代码时,我发现很多大括号使我的代码不太容易理解,所以我喜欢在大多数代码中使用
else if
语句。一些语言(如Java)在自己的文档中经常使用它,这通常是“公认”标准的一个很好的标志

有没有写这篇文章的最佳实践

这里有两个if条件,这两种形式都没有多大优势。除此之外,我肯定会选择平面左对齐的形式。缩进超过三级的代码很难理解,并且几乎总是表示需要将某些内容分解为多个方法。如果它只是一系列连续的If条件,那么就没有理由用大缩进来表示复杂性

有吗