Je suis désolé s'il s'agit d'une question ABSOLUMENT sophomorique, mais je suis curieux de savoir quelles sont les meilleures pratiques, et je n'arrive pas à trouver une bonne réponse sur Google.
En Python, j'utilise généralement une classe vide comme conteneur de structure de données super-catchall (un peu comme un fichier JSON), et j'ajoute des attributs en cours de route:
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]
Cela me donne une énorme flexibilité, car l'objet conteneur peut essentiellement stocker n'importe quoi. Donc, si de nouvelles exigences surgissent, je vais simplement l'ajouter comme autre attribut à l'objet DataObj (que je passe dans mon code).
Cependant, récemment, j'ai été impressionné (par les programmeurs FP) que c'est une pratique horrible, car cela rend très difficile la lecture du code. Il faut parcourir tout le code pour comprendre quels attributs DataObj possède réellement.
Question : Comment puis-je réécrire cela pour une plus grande maintenabilité sans sacrifier la flexibilité?
Y a-t-il des idées de programmation fonctionnelle que je peux adopter?
Je recherche les meilleures pratiques.
Remarque : une idée est de pré-initialiser la classe avec tous les attributs que l'on s'attend à rencontrer, par exemple
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]
Est-ce vraiment une bonne idée? Et si je ne connais pas mes attributs a priori?