我想知道如果这种开关的情况下使用的是合适的,或者有其他替代产品(模式)?替代的switch-case
,以下是我计划的一部分:
基本是我做的一个动作序列
一般程序控制是以下情况逐一顺序;
通常情况下,任何特定的情况下,其第一个电话没有完成,我们必须等到procX
return
strue
。 (等待仪器响应或动作完成);跳转到特定的
case
是可能的(在采样代码中更改StepCurrent
)。
我发现switch
这种 - case
难以维持,特别是通过改变StepCurrent
直接控制流。代码看起来很难看。
有没有更好的方法?
注:虽然我使用C#,问题可能不限于它。
while (true)
{
if (sig_IsExit())
{
break;
}
Thread.Sleep(500);
bRetSts = false;
switch (StepCurrent) // nSeq)
{
case 0:
bRetSts = proc0();
break;
case 1:
bRetSts = proc1();
break;
case 2:
bRetSts = proc2();
break;
case 3:
bRetSts = proc3();
break;
case 4:
...
}
if(bRetSts)
StepCurrent++;
}
你可以使用状态模式。每个过程都在每个状态中使用。您可以更改为下一个状态 – ntohl
您可以创建一个字典,其中数字为键,函数委托为值。这会使代码变小一些。 – etalon11
创建函数功能的数组中此类似行动:http://stackoverflow.com/questions/23477823/is-it-possible-to-store-lambda-expression-in-array-c-sharp –