Mi dispiace se questa è una domanda assolutamente sophomoric, ma sono curioso di sapere quali sono le migliori pratiche là fuori e non riesco a trovare una buona risposta su Google.
In Python, di solito uso una classe vuota come contenitore di strutture di dati super-catchall (una specie di file JSON) e aggiungo attributi lungo la strada:
class DataObj:
"Catch-all data object"
def __init__(self):
pass
def processData(inputs):
data = DataObj()
data.a = 1
data.b = "sym"
data.c = [2,5,2,1]
Questo mi dà un'enorme flessibilità, perché l'oggetto contenitore può essenzialmente archiviare qualsiasi cosa. Quindi, se sorgono nuovi requisiti, lo aggiungerò semplicemente come un altro attributo all'oggetto DataObj (che passo nel mio codice).
Tuttavia, recentemente è stato colpito da me (dai programmatori FP) che questa è una pratica terribile, perché rende molto difficile leggere il codice. Uno deve passare attraverso tutto il codice per capire quali attributi DataObj ha effettivamente.
Domanda : come posso riscriverlo per una maggiore manutenibilità senza sacrificare la flessibilità?
Ci sono idee dalla programmazione funzionale che posso adottare?
Sto cercando le migliori pratiche là fuori.
Nota : un'idea è quella di pre-inizializzare la classe con tutti gli attributi che ci si aspetta di incontrare, ad es
class DataObj:
"Catch-all data object"
def __init__(self):
data.a = 0
data.b = ""
data.c = []
def processData(inputs):
data = DataObj()
data.a = 1
data.b = "sym"
data.c = [2,5,2,1]
È davvero una buona idea? E se non sapessi quali sono i miei attributi a priori?