这是否有条件:
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}
}
或者有例外吗?如果没有例外,那么最好的做法是如何写这个?
答案 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)
答案 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)
{做某事并返回}
做点什么