我会避免像瘟疫这样的事情。
我遇到过的大多数“严重”低级软件都是这种形式的状态机:
#include <stdio.h>
typedef enum
{
STATE_INIT, // Description
STATE_RUNNING, // Description
STATE_COMPLETE // Description
} state_t;
int main(void)
{
state_t state = STATE_INIT; // setup the initial state
while(1)
{
os_run(); // call the OS services (poll the UART, check buttons, etc.)
switch(state)
{
case STATE_INIT:
state = STATE_RUNNING;
puts("init");
break;
case STATE_RUNNING:
state = STATE_COMPLETE;
puts("running");
break;
case STATE_COMPLETE:
puts("complete");
break;
}
}
return 0;
}
C / C ++中还有许多其他好的方法,但是它们不是我的最爱。
QP之类的工具的最大问题是,通常很难做他们不希望您做的事情。如果确实选择手动处理代码,则必须永远保持特殊情况。
我会说,UML状态图是用于文档,教学和分析的绝佳工具。但是,不是用于实际编程的-有更好的工具:)