【问题标题】:if condition best practice [duplicate]如果条件最佳实践[重复]
【发布时间】:2016-06-02 00:57:09
【问题描述】:

我有以下功能:

if(A==B)
{
  //do stuff
}

if(C==B)
{
  //do stuff
}

if(A==B)
   {
      //do stuff
   }
   else if(C==B)
   {
     //do stuff
}  

这两者有什么区别?我明白它的意思,但我看到程序员更喜欢第一个而不是第二个?为什么?

我个人更喜欢第二个。

【问题讨论】:

  • 字?希望你在开玩笑?
  • 好的!我明白了?这与问题无关!为了你的好消息,我会改变它
  • @C0dekid 都一样!!!
  • 真的很抱歉!!1
  • 这些语句在逻辑上根本不一样,它们的工作方式不同(例如,如果 A 为 5,B 为 5,C 为 5),因此您尝试将鳄梨与藜麦进行比较 - @ 987654321@

标签: php


【解决方案1】:

这主要是一个偏好问题。我看到许多程序员使用这两种情况,而不管实际功能如何。

但如果您希望绝对检查两个条件,请正确使用第一种情况,第二种情况作为嵌套条件。

在第一种情况下,两者都会被执行,这使得它比第二种慢,因为它只检查elseif,如果if条件为假


$var = 1;

if($var+1 ==2)
{
  echo "test1";
}

if($var-0==1)
{
  echo "test2";
}


if($var+1==2)
{
    echo "test1";
}
else if($var-0==1)
{
    echo "test2";
}

会输出

test1test2test1

所以我们看到,数字 2 忽略了 elseif,这使它更快。

【讨论】:

  • 两者都是一样的:第二个例子:我没有休息;还是停止它
  • 对性能有影响吗?
  • 不一样。而不是偏好。代码示例具有不同的逻辑。 @TechTreeDev 也许您应该为$var(例如$var = 1)和一些回声添加一个初始值,这样您就可以实际运行它们并查看差异。
  • @AUsr19532:只需检查编辑 :) 你的答案在提交后 10 秒出现
  • 在你的条件语句中,请注意使用“yoda 条件”可以避免你头疼。正常条件:if($myvar == 'string') Yoda 条件:if('string' == $myvar) yoda 条件允许您在忘记 a = if('string' = $myvar) 时避免静默错误 - > 会抛出一个错误 if($myvar = 'string') --> 会让你头疼
【解决方案2】:

在第一个条件下,两个语句都被执行,因为它们是相互独立的,所以它们都会被测试。

if(A==B)
{
  //do stuff
}

if(C==B)
{
  //do stuff
}

第二个 else if 只是一个嵌套在 else 中的 if,所以只有一个会被测试,无论是 if 还是 elseif

if(A==B)
{
  //do stuff
}
else if(C==B)
{
  //do stuff
}

【讨论】:

  • 如果A!=B if 中的代码没有被执行,那么测试就会被执行。任何语句都得到测试,直到一个评估为真/所有条件都失败
【解决方案3】:

不一样。

如果第一个条件为真,则不会执行 else if (C==B)(即使 C 等于 B)。

没有“else”,只要 (C==B) 将被执行,即使第一个条件为真(在这种情况下 A==C :)

【讨论】:

    【解决方案4】:

    如果只有一个变量相等并且无论如何都需要运行相同的代码,最好使用第一个代码,这样就不会损失性能。但是如果你需要根据你的变量运行不同的代码,那么第二个更好。

    【讨论】:

      猜你喜欢
      • 2011-02-13
      • 2010-11-11
      • 1970-01-01
      • 2019-04-03
      • 2013-07-03
      • 2011-02-11
      • 2011-01-28
      • 1970-01-01
      • 2023-03-17
      相关资源
      最近更新 更多