【问题标题】:using php switch code smell or not是否使用 php 切换代码异味
【发布时间】:2017-08-29 14:38:09
【问题描述】:

我正在用 PHP 编写一个类和方法,它使用 switch 来调用依赖于特定 url 的其他方法。下面的例子:

switch($this->clean([$_POST['task']))
{
    case "edit":
        $this->editssomething();
    break;
    case "save":
        $this->savesomethingelse();
    break;
    default:
        $this->dodefault();
    break;
}

这是否被归类为代码异味,我应该对其进行重构还是将其归类为工厂类。

谢谢

【问题讨论】:

  • 在我看来,这正是 switch 的本意。
  • 它通常比加载 if/else if 块要清晰得多。
  • 我以前从未听说过“代码气味”这个词,所以感谢您提醒我注意它有一个名字^.^
  • 绝对没问题。 switch 语句的整个概念是减少嵌套和混乱的 if 语句的数量!这是很好的编程习惯! :)
  • 这可能会因为基于意见而关闭,但通常最好为每个操作设置单独的控制器方法。所以有单独的/save/edit 路由,而不是根据另一个请求参数处理它们的调度程序。

标签: php switch-statement


【解决方案1】:

闻起来很香,但默认不需要“break”,也一定要用骆驼或“_”命名你的函数

switch( $this->clean($_POST['task']) )
{
    case "edit":
        $this->editssomething();
    break;

    case "save":
        $this->savesomethingelse();
    break;

    default:
        $this->dodefault();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多