If statement 对于条件语句的最后一个分支,最好使用else还是else if

If statement 对于条件语句的最后一个分支,最好使用else还是else if,if-statement,conditional-statements,conventions,If Statement,Conditional Statements,Conventions,你喜欢什么 if n > 0 # do something elsif n == 0 # do something elsif n < 0 # do something end 我用了一段时间的else。我最近改做了elsif。我的结论是,第一个选项增加了可读性,但会让一些人感到困惑,如果他们希望使用或。我没有足够的经验来知道第一个选项是否会带来更多的可读性或更多的混乱,以及是否还有其他我错过的优点/缺点 在我的具体示例中,如果else的范围与前面的条件类似,并且它所捕

你喜欢什么

if n > 0
  # do something
elsif n == 0
  # do something
elsif n < 0
  # do something
end
我用了一段时间的
else
。我最近改做了
elsif
。我的结论是,第一个选项增加了可读性,但会让一些人感到困惑,如果他们希望使用
。我没有足够的经验来知道第一个选项是否会带来更多的可读性或更多的混乱,以及是否还有其他我错过的优点/缺点


在我的具体示例中,如果
else
的范围与前面的条件类似,并且它所捕获的内容可以表示为一个简单的条件,那么使用
else
作为最后一个分支是否更可取?另外,不同的条件会影响答案吗?我用Ruby编写了代码,但我认为答案是语言不可知的。如果不是这样,我也想知道原因。

我总是喜欢简单的
其他的
——这对任何人来说都很明显,你的意图是“如果其他一切都失败了,那么就这么做”(没有双关语)


在您的示例中,您只有3种可能的状态,但是如果有更多的状态呢?

我总是喜欢简单的
其他状态
-这让任何人都清楚地看到,您的意图是“如果所有其他状态都失败,那么就这样做”(没有双关语)


在您的示例中,您只有3种可能的状态,但是如果有更多的状态呢?

您应该知道通过条件逻辑的每个执行路径。也就是说,对于剩下的案例,一个简单的else通常是最清楚的。如果你只有一个else,如果它让下一个家伙抓他的头,想知道你是否错过了什么。如果说“else what”让你感觉更好,那么在
else\n<0

编辑后再编辑:

对于我的具体示例,如果else的范围与前面的条件类似,并且它所捕获的内容可以表示为一个简单的条件,那么对于最后一个分支,使用else是否更可取?另外,不同的条件会影响答案吗?我用Ruby编写了代码,但我认为答案是语言不可知的。如果不是,我也想知道为什么

是的,还有别的更好。我想不出任何情况会改变这个答案。拥有else意味着逻辑的完整性。没有else会让人分心——其他人(或者你以后)将不得不花更多的时间仔细检查代码,以确保所有条件都得到了处理。事实上,我遵守的编码标准,BARR Group的嵌入式C编码标准是这样说的:

“任何带有else if子句的if语句都应以else子句结尾……这相当于在每个开关中都要求使用默认情况。”

这与规则14.10相呼应

如果。。。else if结构应以else条款终止


*我所有的例子都与C有关,但正如你在文章中所说的,这是一个对所使用的语言不可知的人。

你应该知道通过条件逻辑的每个执行路径。也就是说,对于剩下的案例,一个简单的else通常是最清楚的。如果你只有一个else,如果它让下一个家伙抓他的头,想知道你是否错过了什么。如果说“else what”让你感觉更好,那么在
else\n<0

编辑后再编辑:

对于我的具体示例,如果else的范围与前面的条件类似,并且它所捕获的内容可以表示为一个简单的条件,那么对于最后一个分支,使用else是否更可取?另外,不同的条件会影响答案吗?我用Ruby编写了代码,但我认为答案是语言不可知的。如果不是,我也想知道为什么

是的,还有别的更好。我想不出任何情况会改变这个答案。拥有else意味着逻辑的完整性。没有else会让人分心——其他人(或者你以后)将不得不花更多的时间仔细检查代码,以确保所有条件都得到了处理。事实上,我遵守的编码标准,BARR Group的嵌入式C编码标准是这样说的:

“任何带有else if子句的if语句都应以else子句结尾……这相当于在每个开关中都要求使用默认情况。”

这与规则14.10相呼应

如果。。。else if结构应以else条款终止


*我所有的例子都与C有关,但正如你在文章中所说的,这是一个对所用语言不可知的人。

如果你希望最后的条件语句是一个包罗万象的语句,那么你应该只使用
else
。为了清楚起见,如果您愿意,您可以这样做:

else # n < 0
   # do something
else\n<0
#做点什么
(注意
n<0
只是一个注释)。这其中有几个原因:

  • 根据语言/编译器的不同,速度可能会有所提高
  • 不太可能犯编程错误。上面的例子相当简单,但是想象一下在编程时有第四个选项没有考虑的情况吗?在这种情况下,当您可能希望它落在
    else
    语句中时,将不会采取任何操作

  • 如果希望最后一个条件语句是一个包罗万象的语句,那么应该只使用
    else
    。为了清楚起见,如果您愿意,您可以这样做:

    else # n < 0
       # do something
    
    else\n<0
    #做点什么
    
    (注意
    n<0
    只是一个注释)。这其中有几个原因:

  • 根据语言/编译器的不同,速度可能会有所提高
  • 不太可能犯编程错误。上面的例子相当简单,但是想象一下在编程时有第四个选项没有考虑的情况吗?在这种情况下,当你可能打算