【发布时间】:2018-12-20 12:19:32
【问题描述】:
我有一段代码,即检查布尔变量是否为真,并根据条件执行相应的操作:
bool result = true;
bool isTrue = false;
CheckIsTrue(ref isTrue);
if (result)
{
if (isTrue)
//Perform action
}
如果变量设置为false,我需要执行另一个操作:
if (result)
{
if (isTrue)
{
//Perform action
}
else if(actionType == 6)
{
//Perform action, isTrue = false.
}
}
出于可读性和可维护性的原因,我决定将以上内容更改为:
if (result)
{
switch (isTrue)
{
case true:
//perform action on isTrue
break;
default:
switch (actionType)
{
case 6:
//Perform action on 6
break;
default:
//Perform default action
break;
}
break;
}
}
我的问题是:在布尔变量上使用swicth.. case... 是否明智?
这是我考虑过的简化代码的最佳方式,但我不确定这到底有多正确。
【问题讨论】:
-
我相信这个问题更适合code review网站。如果您想保持代码可读性,请尝试仅使用一级缩进。
-
我想说这主要是基于意见的,但就个人而言,您的第二个代码示例比使用多个嵌套 switch 语句(如您的第三个)更具可读性。如果您有很多
actionType值需要不同的执行路径,我个人会使用if (isTrue) { ... } else { switch (actionType) { ....} } -
对 bool 使用 switch 语句不是好的编码习惯,所以你应该避免它。只需将 if/else 用于 bool 并在内部切换或调用另一个函数来处理 switch 语句。
-
如果你想使用 switch,请考虑我的回答,因为这是在你的情况下使用 switch 的一种非常易读的方式。
-
@SergeyBerezovskiy 示例,像这样的存根或假设代码在代码审查中是题外话,很快就会关闭。请参阅codereview.meta.stackexchange.com/questions/5777/… 了解更多信息。
标签: c# switch-statement boolean