我们有一个事件驱动的状态机,其中一些事件是外部的(来自我们系统的用户)和内部的(我们自己的代码)。为了简化它,我将使用2个缩写IE(内部事件)和EE(外部事件)
ALGO:
IE-1: change state -> Running
Event IE-1 detected and action taken on event is authenticate.
IE-2: change state -> Authentication success
Event IE-2 detected and action on event is to send reply to client.
EE-3 client replies state -> Closed
Event IE-3 detected and action on event is to release all resources on server.
现在我的建议是将所有内部事件替换为模板函数,并让事件处理仅用于EE。所以新系统将是:
template {
change state to running.
authenticate
change state to auth success
reply client
}
// Event trigger.
onEvent-closeConnection() {
}
这是正确的做法吗?有什么建议/反馈吗?
这一变化的主要目的是系统变得如此复杂,以至于仅仅查看代码就很难跟踪sequence of control
流程。事件处理代码与要执行的操作不在同一文件中。这使得调试更加困难。模板是原子操作。