如何为 Telegram 机器人组织可用命令的字典?优秀的程序员是如何做到的?我知道写几十个if
语句是一个坏主意,就像一个switch
语句一样。
现在它是使用实现的switch
:
- 机器人收到命令
- 在一个
switch
- 处理命令
- 将响应发送给用户
但是当有几十个命令时,switch
操作员变得难以维护。解决这个问题的常用方法是什么?
如何为 Telegram 机器人组织可用命令的字典?优秀的程序员是如何做到的?我知道写几十个if
语句是一个坏主意,就像一个switch
语句一样。
现在它是使用实现的switch
:
switch
但是当有几十个命令时,switch
操作员变得难以维护。解决这个问题的常用方法是什么?
我不是 Python 编码员,但无论您使用哪种语言,您的问题似乎都应该使用关联数组数据结构来解决。结构的实际名称可能因语言而异:例如,在 C++ 中它被称为map
,而在 Python 中它是..dictionary!因此,您多次在问题中写下相关关键字(即使是原始语言)。
考虑到上述情况,您的程序草图可能如下所示:
#!/usr/bin/python
# Command processing functions:
def func1():
return "Response 1"
def func2():
return "Response 2"
# Commands dictionary:
d = {"cmd1":func1, "cmd2":func2}
# Suppose this command was receiced by the bot:
command_received = "cmd1"
# Processing:
try:
response = d[command_received]()
except KeyError:
response = "Unknown command"
# Sending response:
print response