![]() |
1
1
您所做的有点像在程序中构建一个(简单的)虚拟机。FSM往往很适合一些限制性问题,如词法分析和解析,正如您可能注意到的,您可以“免费”获得相当多的日志记录和错误管理。 但是,如果您尝试将FSM模式应用于所有内容(这对GUI程序来说将很困难,因为GUI程序包含了您通常不想进入显式状态的大量状态),那么您将意识到您还需要一些工具来 调试 您的FSM(因为C++调试器不了解您的状态和事件)和设施 链接和重用 状态(因为状态不是OO级构造)。如果你想把你的代码交给别人,他或她需要额外的培训来成功地使用你的FSM。您要为多个应用程序保留一个FSM引擎吗?如果是这样,您将如何处理版本控制和升级? 为正确的工作使用正确的工具。每种方法都有其优点和缺点。您的解决方案添加了另一层 复杂性 你可以用更多的C++方式处理日志记录和错误处理。如果您不喜欢编写C++代码,那么您可以考虑其他现有语言,而不是只建立一个FSM语言。 |
![]() |
2
0
大多数人会使用继承而不是switch/case/default。然而,强迫一切成为一种方式的想法本身就是错误的。您应该始终根据自己的优点来处理每个必需的功能。 |
![]() |
3
0
你总是可以看看 boost . |
![]() |
AstralHex · 矩阵乘法代码工作不正常 4 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 4 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 4 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 4 月前 |