【问题标题】:switch statement having only one caseswitch 语句只有一种情况
【发布时间】:2015-06-29 09:50:28
【问题描述】:

switch 语句中只有一个 case

switch ($coreName) {
    case 'stock':
        $result['website'] = ($result['website']) ? $websiteStatus[$result['website']] : "";
    break;
}

我的问题是这是一个好习惯还是我应该为此使用 if 语句?有什么性能差异吗?

【问题讨论】:

  • 在这种情况下,这只是编写 if 语句的一种复杂方式,因此您可以回答自己的问题。此外,只要您对编程基础有疑问,就不要被性能故事所困扰,因为它几乎无关紧要。
  • 如果您希望以后添加其他案例,完全可以。
  • @DmitryGrigoryev 很抱歉,但这不是一个很好的建议。我可以“期待”一个项目的很多事情。如果要在代码中准备所有这些期望,那么您将冒着设计和开发宇宙飞船来煎蛋的风险。您的代码应该始终遵循众所周知的 JEEP 原则(足够的必要部分)才能使其正常工作。当需求发生变化时,就该换出和/或扩展了。这始终很重要,尤其是对于需要学习最佳实践的新手而言。要么您已经有多个案例需要切换,要么您没有并且您使用 if。

标签: php if-statement switch-statement


【解决方案1】:

仅在以下情况下使用:

1. you have only 2 or more conditions OR You have multiple conditions in single if else.

当使用switch时

1. You have to compare `ONE` variable value against multiple.

在你的情况下是否更好

【讨论】:

  • 老实说,第一个条件毫无意义。如果您有多个边界怎么办?
【解决方案2】:

从技术角度来看,没有什么可以反对这一点。

所以要回答的问题是:为什么你实现了switch 语句而不是if 条件?

我想说默认应该是“正常”if 条件,除非特殊原因指向 switch。两个主要原因可能是:

  • 可扩展性(供以后添加)
  • 可读性(适用于其他编码人员)

这里尤其要考虑第一种情况。如果可能需要扩展处理,那么立即使用switch 肯定是一个好习惯。

【讨论】:

    【解决方案3】:

    如果您转到phpBench.com 并向下滚动以查看if 和case 之间的结果,您会发现使用if 语句会稍微快一些,但结果并没有太大差异。 (截图如下)

    您也可以使用if,因为它更易于阅读、代码更少且速度更快(即使只是很小的数量)。

    if($corename === "stock") {
      $result['website'] = ($result['website']) ? $websiteStatus[$result['website']] : "";
    }
    

    case 应该只在您比较多个值而不是一个值时使用。这与使用elseif 相同。使用if 是最适合的。

    【讨论】:

      【解决方案4】:

      为什么不简单地做一个简单的 if,像这样:

      if($coreName == 'stock')
          {
              $result['website'] = ($result['website']) ? $websiteStatus[$result['website']] : "";
          }
      

      希望这会有所帮助。

      【讨论】:

      • 是的,但是如果我们在这种情况下使用 if over switch 会有什么好处。
      • Switch 适用于需要测试多个案例的情况。在您的具体情况下,这是不合适的。在性能方面,if ... else 非常棒(@BeatAlex 的回答比我更详细)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-13
      • 1970-01-01
      • 1970-01-01
      • 2011-11-21
      相关资源
      最近更新 更多