Lamento si esta es una pregunta ABSOLUTAMENTE de segundo año, pero tengo curiosidad por saber cuáles son las mejores prácticas, y parece que no puedo encontrar una buena respuesta en Google.
En Python, usualmente uso una clase vacía como un contenedor de estructura de datos super-catchall (algo así como un archivo JSON), y agrego atributos en el camino:
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]
Esto me da una gran cantidad de flexibilidad, porque el objeto contenedor esencialmente puede almacenar cualquier cosa. Entonces, si surgen nuevos requisitos, lo agregaré como otro atributo al objeto DataObj (que paso en mi código).
Sin embargo, recientemente me han impresionado (los programadores de FP) que esta es una práctica horrible, porque hace que sea muy difícil leer el código. Uno tiene que revisar todo el código para descubrir qué atributos tiene realmente DataObj.
Pregunta : ¿Cómo puedo reescribir esto para una mayor capacidad de mantenimiento sin sacrificar la flexibilidad?
¿Hay alguna idea de la programación funcional que pueda adoptar?
Estoy buscando las mejores prácticas por ahí.
Nota : una idea es preinicializar la clase con todos los atributos que uno espera encontrar, por ej.
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]
¿Es esta realmente una buena idea? ¿Qué pasa si no sé cuáles son mis atributos a priori?