我想知道如果這種開關的情況下使用的是合適的,或者有其他替代產品(模式)?替代的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 –