知识卡片

状态机覆盖罕见迁移

普通读书笔记卡 · 1797.c

内容

状态机设计不能只画常见路径,还要明确每个状态下收到异常事件时如何处理。发散:罕见迁移如果没有被定义,就会在现场以最难复现的方式替你定义系统行为。

参考来源

- 位置:《嵌入式系统设计与实践》第5章《任务管理》"5.2.1 状态机范例:信号灯控制器"一节(源文件:_epub-src/OEBPS/text00069.html) - 结论依据:原文以信号灯为例说明"应该做好准备,注意每个状态中可能发生的每个迁移,包括非常罕见的情况——甚至包括那些不该发生但由于错误而可能发生的情况",并说明命令是异步的,"每个状态都应该能够处理停止命令和前进命令,即使命令是错误地产生"。 - 原始内容:这个巧妙的机制是状态机的难点之一。对此,应该做好准备,注意每个状态中可能发生的每个迁移,包括非常罕见的情况——甚至包括那些不该发生但由于错误而可能发生的情况……每个状态都应该能够处理停止命令和前进命令,即使命令是错误地产生。命令错误时,最简单的处理办法是忽略命令,用一个环回到相关状态。