【发布时间】:2015-03-06 13:15:28
【问题描述】:
我想知道是否有更好更有效的方式来使用 if 语句,而不仅仅是长行
if(){
//code
}else if(){
//code
} else{
//code
}
我在网站上做了一些研究,发现了这个:
如果您只有 2 个值,我强烈建议您使用您发布的代码,因为它可能是最易读、最优雅和最快速的代码(恕我直言)。
但是如果你有更多这样的案例并且更复杂,你可以 考虑使用 switch 语句:
switch (el.type)
{
case ElementType.Type1:
case ElementType.Type2:
case ElementType.Type3:
//code here
break;
case ElementType.Type4:
case ElementType.Type5:
//code here
break;
case ElementType.Type6:
//code here
break;
}
that translated in if statements would be:
if (el.type == ElementType.Type1 ||
el.type == ElementType.Type2 ||
el.type == ElementType.Type3 )
{
// code here
}else if(el.type == ElementType.Type4 ||
el.type == ElementType.Type5)
{
// code here
}else if(el.type == ElementType.Type6)
{
// code here
}
他们和我完全一样,但开关看起来更可读/更清晰,你需要输入更少(即它在代码长度方面“更短”):)
虽然我不太明白它在告诉我什么,但它是说 switch 语句更适合长 if 语句还是?
为了了解我的问题的一些上下文,我有一个带有一些单选按钮的 Windows 窗体应用程序 - 如果你愿意,可以填写一份问卷 - 我想知道是否有更有效的方法可以减少重复的不必要的代码行并将它们替换为简短的做同样工作的代码。
【问题讨论】:
-
if和switch都是流控制语句。在大多数情况下,它们在技术上是可互换的(80% 的时间)。选择最符合上下文的一项。 -
你能发布你的 if/else 代码的(短)部分吗?
-
这可以通过多态行为解决吗?您如何为
ElementType创建或分配不同的值? -
我们真的需要更多的上下文。你说你有一些单选按钮。您如何在 if/else 级联中访问它们?你能发布一些示例代码吗?
标签: c# design-patterns refactoring