如何从有限状态机故障中恢复?
我的问题似乎很科学,但我认为这是一个普遍的问题,经验丰富的开发人员和程序员希望能提供一些建议来避免我在标题中提到的问题。顺便说一句,我描述的波纹管是我要在我的iOS项目中主动解决的一个实际问题,我想不惜一切代价避免它。 通过有限状态机,我的意思是:>我有一个带有几个按钮的UI,与该UI相关的几个会话状态以及该UI表示的内容,我有一些数据,这些数据的值部分显示在UI中,我接收并处理了一些外部触发器(由传感器的回调表示)。我制作了状态图,以更好地映射在该UI和应用程序中理想和可实现的相关方案。随着我慢慢实现代码,应用程序开始表现得越来越像它应该的样子。但是,我不是很自信。我的怀疑来自观察自己的想法和实施过程。我确信我已经涵盖了所有内容,但是足以在UI中进行一些粗暴的测试,并且我很快意识到在行为方面仍然存在差距。然而,由于每个组件都依赖于其他组件的输入并根据其他组件的行为运行,因此来自用户或某些外部源的某些输入会触发一系列事件,状态更改等。我有几个组件,每个组件的行为都像这样:输入时收到触发器->触发器,并分析其发送者->基于分析输出一些信息(消息,状态更改) 问题是,这不是完全独立的,并且我的组件(数据库项,会话状态,某些按钮的状态)...可以在事件链范围之外进行更改,影响,删除或以其他方式修改。理想的情况。(电话崩溃,电池突然没电了,这会导致系统无效),这可能会导致系统无法恢复。我在苹果商店上的许多竞争对手应用程序中都看到了这种情况(人们没有意识到这是问题所在),客户编写了这样的内容:“我添加了三个文档,到那儿走了之后,我无法打开它们,即使看到他们。” 或“我每天都录制视频,但是录制了太多日志的视频之后,我无法在其上打开字幕..,并且用于字幕的按钮没有 这些只是简短的示例,客户通常会对其进行更详细的描述。.根据它们中描述的描述和行为,我认为特定应用具有FSM故障。 因此,最终的问题是如何避免这种情况,以及如何保护系统避免自身阻塞? 编辑>我是在电话中一个viewcontroller视图的上下文中谈论,我的意思是应用程序的一部分。我了解MVC模式,我具有用于不同功能的单独模块。.我描述的所有内容都与UI上的一个画布相关。