Migliore strutturazione per la decodifica dei messaggi IRC (Python)

1

Sto scrivendo un semplice chatbot IRC in Python e, nel tentativo di ottenere di più in OOP, ho creato una classe base di "connessione" che gestisce tutto il back-and-forthing coinvolto. Ma il protocollo IRC è piuttosto fastidioso con cui lavorare, quindi ho scritto una funzione che prende il messaggio non elaborato dal server e lo traduce in un formato molto più semplice da utilizzare. (Separa l'utente / canale dal quale proviene il messaggio, il messaggio che contiene, ecc.)

Nella mia prima iterazione di questa funzione, ho usato una tupla per restituire questa informazione, ma questo è stato estremamente difficile da lavorare poiché dovevo ricordare quale elemento della tupla corrispondeva a quali informazioni. Poi l'ho cambiato per restituire un dizionario, con gli indici "canale", "utente" e "msg". (Non tutti sono usati per ogni messaggio / evento, ovviamente.) Ma mentre sto guardando indietro al mio codice scritto per quel sistema, anche questo sembra un po 'ingombrante. Quindi qual è il modo migliore * per fare questo? La mia lista indicizzata dalle stringhe era un buon modo per andare? O dovrei continuare con le tuple, ma scompattarlo in variabili separate? Grazie in anticipo.

  • Vado di leggibilità, manutenibilità e Pythonicness (se è una parola)
posta Hactar 14.05.2016 - 06:06
fonte

1 risposta

0

Considera la programmazione orientata agli oggetti.

Se hai procedure che devono agire su questi dati, una classe li raggruppa in modo piacevole. La tua funzione, che accetta i messaggi non elaborati, potrebbe essere utilizzata per costruire questi oggetti.

Per la manutenibilità prova un dire, non chiedere approccio.

You should endeavor to tell objects what you want them to do; do not ask them questions about their state, make a decision, and then tell them what to do.

Potresti dire a un tale oggetto: mostrare al tuo canale, aprire una finestra di messaggio privato con questo utente, sollevare uno qualsiasi di questi eventi richiesti una volta che analizzano questo messaggio.

Questo ti allontana dalla programmazione procedurale. È un po 'diverso ma si adatta molto bene.

    
risposta data 15.05.2016 - 16:51
fonte

Leggi altre domande sui tag