"if'VS"否则"如果"

kof*_*cii 11 language-agnostic debugging if-statement

我被告知,使用"if"语句是首选,因为代码更难调试,当使用"else if"时?这句话中有一点真相吗?

Chr*_*l52 51

我从来没有调试'else if'语句的问题.我认为使用'else if'语句是干净的,并且它与程序员通信,读取代码,'else if'语句组是互斥的.

  • +1无法达成一致.IMO,对于相互排斥的条件而言,具有单独的IF语句而不是elseif,这使得在调试时更加困难. (16认同)

Kei*_*thS 12

if(...)
{
}
else if(...)
{
}
Run Code Online (Sandbox Code Playgroud)

完全等同于:

if(...)
{
}
else
   if(...)
   {
   }    
Run Code Online (Sandbox Code Playgroud)

以同样的方式:

if(...)
   foo();
else
   bar();
Run Code Online (Sandbox Code Playgroud)

完全等同于:

if(...) foo();
else bar();
Run Code Online (Sandbox Code Playgroud)

它是100%的风格,无论一个是否比另一个更具有可读性,都是基于您的编程文化,语言和陈述的复杂程度的总判断.


Nic*_*ore 9

如果/ If else语句不会生成错误代码,我会这样做


Wok*_*Wok 8

if和之间的差异与协调独占连接else if之间的差异相同.

  • 我的意思是没有人可以推荐一个而不是另一个. (3认同)

小智 8

也许你的老板只是意味着提前退货.

我不经常需要if / else.但这并不是因为else错了,而是因为我喜欢早期的回报,如果你使用早期的回报,你就不需要那么多.

所以而不是:

boolean validate(DomainObject o) {
  boolean valid = false;
  if (o.property == x) {
     valid = true;
  } else if (o.property2 == y) {
     valid = true;
  } ...
  return valid; 
}
Run Code Online (Sandbox Code Playgroud)

我更喜欢输入:

boolean validate(DomainObject o) {

  if (o.property == x) 
     return true;

  if (o.property2 == y) 
     return true;

  return false; 
}
Run Code Online (Sandbox Code Playgroud)

  • @Spudley:我一直认为现代语言的规则有点过时了.如果你需要在退出时手动"释放()"你的资源,它曾经有用.但我不再做K&R C. (3认同)