【发布时间】:2011-06-28 10:50:02
【问题描述】:
是否可以通过应用状态机模式来改进曾经编写的所有代码?
我正在从事一个项目,该项目包含大量可怕的、错误的、破碎的意大利面条代码。 我复制了Martin Fowler's example State Machine code from this blog 并将整个垃圾堆变成了一系列语句。 从字面上看,只是状态、事件、转换和命令的列表。
我无法相信这种转变。代码现在很干净,并且可以工作。当然,我之前知道状态机,甚至已经实现了它们 但在 Martin Fowler 的示例中,模型/配置的分离是惊人的。
这让我觉得我所做的几乎所有事情都可以在某种程度上从这种方法中受益。我希望在我使用的每种语言中都有这个功能。 也许这甚至应该是语言级别的功能。
有人认为这是错误的吗? 或者任何人有不同模式的类似经历?
【问题讨论】:
-
我非常喜欢状态机来解决许多嵌入式编程问题。我确实发现在特殊情况下,模式往往会爆炸(状态大幅增加)或分崩离析(人们违反模式),需求更改等出现在画面中,尤其是当更改是由经验不足/能力不足的开发人员进行时。某些情况(例如动态指定的重试次数)需要注意在 FSM 中正确实施。
标签: design-patterns architecture state-machine