【问题标题】:Use of break after return返回后使用休息
【发布时间】:2019-12-17 15:26:48
【问题描述】:

我访问的网站失败了

致命错误:'break' 不在FILE 的'loop' 或'switch' 上下文中N

查看源代码(通过文件名/路径找到 - 它是一些开源代码的旧版本)显示 许多 函数类似于此:

class Clazz {
  // stuff
  public static function foo($bar) {
    // some code without loops/return
    return 'baz';
    break; // This is line N
  }
}

现在我知道 break 在循环或切换上下文 was allowed in PHP 5 but is no longer since PHP 7 之外,因此会出现错误消息。

我的问题是:你为什么要在退货后加上break这是/是一些(过时的)成语吗?

我现在在多个不同代码库的多个函数中发现了这种模式;所以对我来说,这似乎不是重构或对单个开发人员的误解的“遗留物”..?

【问题讨论】:

  • 这对我来说也毫无意义。很奇怪。
  • 你确定它不是像if (x) return; break; 这样的返回是有条件的并且可能会被跳过吗?如果不是,那么据我所知,代码永远不会有意义。这些代码库有哪些?如果他们都是您工作的本地人,则可能是一名(奇怪)员工的工作。
  • PHP - Break after return?的可能重复
  • 这是多余的代码。但是编译器并没有将其视为错误。我想因为它是可执行的很长时间,所以每个人都离开了它。
  • @treyBake - 不,这里的返回(据说)不会出现在条件之后,所以它总是执行。在您的链接中,返回可能不会执行,问题是返回本身是否足以退出函数。

标签: php break idioms


【解决方案1】:

return 语句之后的代码永远不会被执行,那么这个 break 就没有用了。

我会想象开发人员会测试功能,他们忘记删除该代码,因为 will never be executed 那时没有问题。

要重构该代码,只需忽略它(删除),因为它从来没有工作过。

【讨论】:

  • 我的意思是,不要重构该代码。因为它不起作用
猜你喜欢
  • 1970-01-01
  • 2018-05-01
  • 1970-01-01
  • 2014-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多