LukeSavefrogs / danea-easyfatt

Danea Easyfatt automation suite
https://lukesavefrogs.github.io/danea-easyfatt/
GNU General Public License v3.0
4 stars 0 forks source link

Accesso globale alla configurazione #96

Closed LukeSavefrogs closed 1 year ago

LukeSavefrogs commented 1 year ago

Ad oggi la configurazione viene letta solamente nel file main.py passando il percorso completo al file di configurazione recuperato dalla linea di comando (CLI):

https://github.com/LukeSavefrogs/danea-easyfatt/blob/1af44e2ef269aab6c669d028405add55388f9641/src/veryeasyfatt/app/main.py#L39-L46

Questo crea diversi problemi:

  1. Per ottenere la stessa configurazione è necessario passare ogni volta il percorso al file di configurazione. Questo fa sì che se volessimo accedere alla configurazione corrente da un modulo diverso bisognerebbe per forza passargli in qualche modo questo percorso, altrimenti verrebbe restituita la configurazione di default
  2. Ogni funzione richiamata dal file main.py per essere configurabile deve per forza accettare in ingresso un parametro che verrà preso dalla configurazione (in quanto non può accedervi direttamente per il motivo espresso al punto 1)

Soluzioni

Singleton

L'idea prevalente è quella di usare una classe Configuration che implementi il Singleton Pattern (come in questo esempio calzante).

In questo modo la configurazione viene caricata in memoria per tutta la vita dell'oggetto Configuration e vi si può accedere globalmente andando ad includere il modulo e richiamando Configuration.get_instance() (o un metodo analogo) che ritorni la configurazione corretta.