哪种从 switch 语句返回 bool 值的方法更可取?我知道这可能是主观的,但我认为获得有关最佳实践的意见对我们的职业很重要 :)。
public bool foo(param)
{
switch (param)
{
case 1:
if (something)
{
return true;
}
return false;
default:
return false;
}
}
- 或 -
public bool foo(param)
{
bool flag = false;
switch (param)
{
case 1:
if (something)
{
flag = true;
}
break;
default:
break;
}
return flag;
}
最佳答案
这里的区别是单点返回和多点返回。
一般来说,单点返回代码往往会做大量的簿记工作(临时变量,在循环中检查这些变量),并且随着逻辑变得更加复杂而变得棘手。我看到过大量使用 while (flag) ... flag = false;
模式而不是 while (true) ... break;
模式,读起来一点也不有趣。
我更喜欢多个返回点,因为它们会尽早返回(无需完成额外工作)并且不需要任何本地人帮助跟踪当前返回值。此外,我发现它们并不比单点返回代码更难阅读。
在 c2 ( SingleFunctionExitPoint ) 上对此有很好的讨论。
我发现让方法尽可能保持“功能性”是一件好事(我在这里说“功能性”是因为我通常使用 C#,在 LINQ 之外,它不被认为是功能性的)。通过“功能性”,我的意思是我尽量避免改变状态。以局部变量或成员的形式引入更多状态会使事情变得更难理解,因为您现在必须考虑它们的值,并且必须考虑如何设置这些变量(从另一个方法,另一个类,...) .
总的来说,国家是邪恶的,但有时它是必要的邪恶。
这个特定问题有一些有趣的对话 here on SO
关于c# - 最佳实践 : Returning from method in case block of switch statement?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3588181/