Skip to content
This repository has been archived by the owner on Nov 29, 2022. It is now read-only.

Refactoring del codice mozitabot #51

Open
dag7dev opened this issue Oct 6, 2020 · 13 comments
Open

Refactoring del codice mozitabot #51

dag7dev opened this issue Oct 6, 2020 · 13 comments
Labels
🆘 help wanted Extra attention is needed ‼️ priority

Comments

@dag7dev
Copy link
Member

dag7dev commented Oct 6, 2020

USARE QUESTO ISSUE SOLO PER RILASCIARE AGGIORNAMENTI IMPORTANTI

Link al branch di sviluppo: https://github.com/dag7dev/MozItaReBot

Issue tracker: MozillaItalia/MozItaReBot#1

Discussione originale Siccome il codice attuale è "messy", bisognerebbe fare un refactoring appena possibile.

Cito qualcosa che mi viene in mente:

  • dividere il codice in funzioni e subroutine (eventualmente con delle funzioni lambda per facilitare la stesura)
  • ogni variabile / funzione / subroutine deve avere un nome significativo
  • creare delle funzioni generali parametrizzate
  • valutare se è il caso di creare degli oggetti (vorrei evitare ma in caso venga fatto bisogna stabilire una gerarchia di oggetti)
  • ogni funzione deve essere documentata e il codice deve essere scritto in grado di generare della documentazione "autonomamente" (per esempio utilizzando Doxygen così abbiamo il supporto anche a Graphwiz che ci aiuta graficamente, leggere qui
  • i commenti vanno fatti in maniera significativa
  • sia codice che commenti DOVREBBERO essere scritti in un inglese comprensibile (questo perché magari se qualcuno vuole darci una mano non sa dove mettere le mani, e soprattutto perché se prevediamo di estendere questo bot a un caso generale poi bisognerebbe rimettere mano al codice)
  • ogni parte di codice andrebbe "divisa" internamente (es. funzioni di utilità, funzioni per "fare questa cosa" ecc)
  • andrebbero evitate le variabili globali, a meno che non siano strettamente necessarie

Dare un'occhiata anche qui: PEP8

Inoltre Telepot è stata deprecata, quindi bisognerebbe trovare una valida alternativa al più presto.

Me ne potrei teoricamente occupare io appena ho tempo, ma ditemi voi cosa ne pensate.

@dag7dev dag7dev changed the title Refactoring del codice - definire linee guida del codice secondo basi sensate Refactoring del codice Oct 6, 2020
@ilyasmg
Copy link
Contributor

ilyasmg commented Oct 7, 2020

Ha senso. E' un lavoro lunghino da fare. Rido un occhiata al codice e se mi viene in mente qualche modifica per semplificare faccio PR

@FedericoAntoniazzi
Copy link

Ciao a tutti,
Penso che un rewrite completo ad una libreria aggiornata sia più conveniente rispetto ad un semplice refactoring.

Io conosco già python-telegram-bot e potrei occuparmene almeno per l'inzio ma comunque è una libreria non troppo complessa e ben documentata.

Fatemi sapere cosa ne pensate :)

@Mte90
Copy link
Member

Mte90 commented Oct 26, 2020

Se si passa a una altra libreria, si organizza meglio il codice e si fanno tests automatici per me meglio evitare il refactoring.
Sicuramente però se va in produzione deve avere le stesse funzionalità, possiamo casomai fare un analisi di quelle che non sono utili ma non credo che ne abbiamo.

@FedericoAntoniazzi
Copy link

Ho già visto questo argomento per quanto riguarda i bot ma l'unica è creare uno userbot (altra libreria) e farlo interagire con il bot.
L'alternativa che mi convince di più è creare dei metodi per wrappare le singole azioni del bot e testarle individualmente

@Mte90
Copy link
Member

Mte90 commented Oct 26, 2020

Considerando che abbiamo anche il bot Antispam https://github.com/MozillaItalia/mozitaantispam_bot forse conviene fare una libreria comune per semplificare la gestione?

@dag7dev
Copy link
Member Author

dag7dev commented Oct 26, 2020

@Mte90 intendi scrivere una "utils lib" comune a tutti i bot?

A quel punto converrebbe aggiungerla come sottomodulo su ogni bot, quindi una repo a parte così ogni volta che viene aggiornata non bisogna aggiornare manualmente tutti i bot...

@FedericoAntoniazzi
Copy link

@Mte90 Sì, potrei prendermi carico di ciò. Non mi sembrano bot tanto complessi però chiaramente verrebbe più semplice in team

@ilyasmg
Copy link
Contributor

ilyasmg commented Oct 26, 2020

@FedericoAntoniazzi ho cominciato a fare una bozza usando python-telegram-bot sul mio fork del bot (ho creato una nuova branch new_bot) se vuoi dare un occhiata

@Mte90
Copy link
Member

Mte90 commented Oct 26, 2020

Si intendo una libreria unica così è piú facile gestire il tutto e il codice è piú testabile e meno spaghettoso.

Vedete voi come organizzarvi, fate anche un repo nuovo di pacca, poi dopo in caso lo migriamo dentro l'organizzazione.

@FedericoAntoniazzi
Copy link

@ilyasmg Fantastico, più tardi dò un'occhiata :D

@dag7dev
Copy link
Member Author

dag7dev commented Oct 26, 2020

https://github.com/dag7dev/mozitahub_bot/tree/experimental

Branch experimental funzionante (abbozzata UI + check sui file .env)

Grazie a @FedericoAntoniazzi per il supporto e per l'idea del file .env!

.env file:
TOKEN=your-token
NEWS_CHANNEL=@your-news-channel

@dag7dev
Copy link
Member Author

dag7dev commented Oct 27, 2020

https://github.com/dag7dev/mozitahub_bot/tree/experimental

Aggiornamento: codice refactored

EDIT: guardare il primo messaggio

@dag7dev dag7dev added ‼️ priority 🆘 help wanted Extra attention is needed labels Nov 15, 2020
@Sav22999
Copy link
Member

Sav22999 commented Dec 9, 2020

Possibile libreria da utilizzare: https://github.com/eternnoir/pyTelegramBotAPI

@dag7dev dag7dev changed the title Refactoring del codice Refactoring del codice mozitabot May 11, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
🆘 help wanted Extra attention is needed ‼️ priority
Projects
None yet
Development

No branches or pull requests

5 participants