Итак, я начинаю писать простой процедурный бот Python IRC с нуля (то есть необработанные сокеты) и пытаюсь найти лучший способ его разработки.
Обычно у меня есть большой цикл while (), который будет сидеть там и помещать данные, полученные из сокета, в буфер, и я буду использовать массивный оператор if / else для сканирования строки (используя регулярные выражения) выяснить, что с этим делать. У меня такое чувство, что я не должен этого делать, потому что это ужасно.
Я решил создать словарь регулярных выражений и связанных с ними значений, например,
regexes = {"^PING: (.+)": "incomming_ping",
"more regex": "more meanings"}
и просто используйте цикл for / in для поиска по тексту и выяснения, какое регулярное выражение соответствует ему. Я зашел так далеко, и я первым делом подумал: «Хорошо, я могу просто сделать каждую« процедуру », которая будет вызываться, когда конкретное регулярное выражение соответствует функции, и вызывать соответствующую функцию в зависимости от значения. I» Либо я застрял с использованием массивного оператора if / else, чего я не хотел делать в первую очередь, либо я мог бы использовать какой-то Pythonic 'eval', который немедленно запускает тревожные звонки.
В любом случае, я облажался, и я не могу придумать, как подойти к этому, не пройдя полностью ООП (сейчас я не планирую делать это, не спрашиваю почему).
Есть идеи?