我有一个我在python中编程的facebook messenger聊天机器人。它处理了几十个命令,主要是通过大量的if / then语句,如下所示
if state == "state1":
if "command1" in message:
(do stuff)
elif "command2" in message:
(do other stuff)
state = "waiting_command2_resp"
elif ...
elif state == "waiting_command2_resp":
if message == "response1":
(stuff)
elif message == "response2":
(you get the idea)
elif...
你明白了。随着僵尸程序的功能不断增长并变得越来越复杂,代码的导航变得异常混乱。
我正在寻找一种重构代码的方法,以便它更清晰。我可以使每个动作成为一个方法,但if / else语句的质量将保留以确定调用哪个方法
为每个方法分配字符串并运行适当的方法(其分配的字符串与消息字符串匹配)有什么好的,可维护的方法?
我知道Flask运行方法来响应方法定义之上的URL路径字符串。例如:
@app.route('/')
def index():
do stuff
@app.route('/endpoint')
def method():
do other stuff
我有什么方法可以通过类似的行为来做到这一点吗?
编辑:这不是它标记为副本的问题的副本。那个问题是关于你是否有一个字符串,其中包含函数的确切名称。情况并非如此