Ho un progetto software che cresce rapidamente in modo inaspettato, molti clienti richiedono compiti simili ma con esigenze e parametri leggermente diversi. Inizio a non gradire la mia attuale struttura del codice e ho in mente due idee su come migliorare il mio codice:
Ho una libreria condivisa con funzioni condivise al suo interno. Questa libreria è importata in ogni file di procedura. Un file di procedura per ogni attività, i compiti si sovrappongono molto (90%) ma questo potrebbe cambiare in futuro poiché le persone cambiano le loro idee e le richieste in continuazione (progetto scientifico).
Idea A) Ho un file di configurazione con tutte le impostazioni e i parametri che possono essere modificati a seconda della procedura. In un singolo file di procedura, utilizzo i parametri estratti del file di configurazione per configurare il sistema. Esempio:
import shared_lib
# Get all the parameters and procedure from my configuration file
# This step is the same for each procedure
shared_lib.function1()
# This step depends which procedure we use
if procedure1:
shared_lib.function2()
elif procedure2:
shared_lib.function3()
# For this step we need to set a parameter depending on which procedure we use
if procedure1:
shared_lib.function4(x = 10)
elif procedure2:
shared_lib.function4(x = 20)
# This step is the same for each procedure
shared_lib.function5()
Questo funziona per due procedure ma temo che il file diventi disordinato con un numero crescente di procedure, cosa che mi aspetto in futuro. Inoltre, è molto fastidioso modificare le impostazioni nel file di configurazione ogni volta che cambio la procedura.
Idea B) Crea un file per ogni procedura e includi tutte le impostazioni e il codice di procedura all'interno del file. Esempio:
### File procedure1
import shared_lib
# Set parameters
x = 10
# Start procedure
shared_lib.function1()
shared_lib.function2()
shared_lib.function4(x)
shared_lib.function5()
Esempio
### File procedure2
import shared_lib
# Set parameters
x = 20
# Start procedure
shared_lib.function1()
shared_lib.function3()
shared_lib.function4(x)
shared_lib.function5()
Ciò che non mi piace dell'idea B è che finirò con molti file di procedura (più molti file del codice condiviso) con una grande parte di codice sovrapposto.
Posso fare di meglio? Non sono molto convinto di entrambe le idee ...