记录有意切换失败的最佳方法是啥?

Posted

技术标签:

【中文标题】记录有意切换失败的最佳方法是啥?【英文标题】:What's the best way to document intentional switch fall-through?记录有意切换失败的最佳方法是什么? 【发布时间】:2013-06-30 23:45:07 【问题描述】:

我发现自己处于一种情况,即最好选择开关盒。我的意思是:

switch($bar)

    case 0:
        // do something
    case 1:
        // do more
        break;
    //more cases

目前我的 IDE (phpStorm) 正在发出有关失败的警告。

phpDoc 中是否有一种可接受的方式来记录这种预期的失败?

n.b.我知道你们中的一些人无疑会说不要这样做,但我订阅了这个definition of evil,这肯定是“替代品中最不坏的”。

【问题讨论】:

我总是将// Deliberate fallthrough 放在冒号右侧的注释中,尽管这更多是为了程序员的缘故。我认为您不能禁用 IDE 的警告 消除警告的唯一方法是配置 phpstorm 打印的警告,在这种情况下删除掉线警告。但这并不是很有效,因为也许在另一个脚本中您只是忘记了中断,因此警告将是有用的。我通过忽略警告来处理它,并可能添加额外的评论或与之类似的东西,以明确这是故意写的。 @GordonM 我已经这样做了,但只是想知道是否有更正式的方式来记录这种行为。 正如其他评论者所说,唯一的方法是关闭警告(我对 PHPStorm 不是很熟悉,所以我会相信他们的话)。鉴于您不小心跌倒的情况可能比您被警告故意跌倒的情况严重得多,并且考虑到故意跌倒不是您应该经常做的事情,我只会忍受警告。 没有用于指示此类行为的 phpDocumentor 标记。 【参考方案1】:

虽然问题明确询问了 phpDoc,但这里有一个针对 PHPStorm 的特定于 IDE 的解决方案。

对于 javascript,请评论

//noinspection FallthroughInSwitchStatementJS

在 switch 语句之上。

对于 PHP,请评论

/** @noinspection PhpMissingBreakStatementInspection */

在有问题的案例陈述之上。

【讨论】:

可爱!这正是我所希望的。谢谢。 在 PHPStorm 中(也可能在其他 JetBrains IDE 中),您也可以按下 Alt+Enter 并将光标悬停在有问题的代码上,然后选择“Suppress for statement”。然后,禁用检查的相应注释将自动插入到正确的位置。 这确实有帮助,但如果 PhpDoc 可以有一个像 @fallthrough 这样的标签,那就太好了 :) 也许 PHP-Fig 的东西 @donquixote PhpDocumentor 团队表示他们打算坚持生成外部文档所需的最少标签。 虽然一些类/方法标签有待讨论,但他们肯定会不支持在函数内部添加标签。 这个解决方案对于 PHPStorm 用户来说听起来可行,但它并不完全符合 PSR 标准。他们在那里要求发表评论// no break 或类似的东西......我希望Storm 能够抓住这一点,而不是要求我在我的代码中添加一个丑陋的私人@noinspection 标志:/

以上是关于记录有意切换失败的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在 Rails 中,更新记录或创建新记录(如果不存在)的最佳方法是啥?

用 YARD 记录“splatted”参数的最佳方法是啥? [关闭]

使用 Thymeleaf 在 Spring Boot 中记录 Activity 的最佳方法是啥?

如果路径已知,检查 Firestore 记录是不是存在的最佳方法是啥?

在 Python 程序中记录每个变量赋值的类型的最佳方法是啥?

连接由公共事实表连接的多个维度表的记录的最佳方法是啥