这个切换声明味道不好吗?

5 c# switch-statement

Switch(some case) {
    case 1:
           // compute something ...
           return something;
           break;
    case 2:
           // compute something ...
           return something;
           break;

/* some more cases ... */

    case X:
           // compute something ...
           return something;
           break;
    default:
           // do something
           return something;
           break;
}
Run Code Online (Sandbox Code Playgroud)

在我看来:

假设这个switch语句是合理的,返回和中断看起来不正确或感觉不对.

休息显然是多余的,但是遗漏的风格很差(或者这种风格很差?)?


我个人不这样做,但在代码库中有一些工作.不,我不会自以为是并纠正代码库.

Jon*_*eet 21

不,遗漏不是穷人的风格 - 包容是穷人的风格.那些是无法达成的陈述.摆脱它们.

我喜欢这样的事实情况下直接返回设置一个局部变量,然后只在底部返回,而不是-这意味着当你读它的代码是令人难以置信的清晰确实只需要回报,而这一切.

关于切换的侧面说明:

至于在这里使用switch语句是否正确,它实际上取决于其他事情.使用多态类型是否有意义?如果你是Java,你能使用智能枚举吗?(您可以在C#中模仿这些,但没有那么多的支持.)

我要说这至少应该考虑不同的设计 - 但它可能是最简单的方法来做你想要的.


Mar*_*own 11

如果您这样做,说C#编译器会发出警告,说明中断是无法访问的代码.因此,在我的书中,返回和休息都是不好的形式.


MPr*_*ard 5

在我看来,我会省略'break'关键字.我个人认为这有助于提醒人们'执行已经结束!没什么好看的!'.


Eli*_*lie 5

我会做一个小改动:

switch(some case) {
    case 1:
           // compute something ...
           break;
    case 2:
           // compute something ...
           break;
/* some more cases ... */
    case X:
           // compute something ...
           break;
    default:
           // do something
           break;
}
return something;
Run Code Online (Sandbox Code Playgroud)

  • 我建议不要这样做,因为这意味着你需要阅读整个case语句来检查'something'变量是否还有其他变化.如果你刚刚回来,那么很快就会明白,不,没有:-) (3认同)