Es tut mir leid, wenn dies eine ABSOLUT sophomorische Frage ist, aber ich bin gespannt, welche Best Practices es gibt, und ich kann bei Google anscheinend keine gute Antwort finden.
In Python verwende ich normalerweise eine leere Klasse als Super-Catchall-Datenstrukturcontainer (ähnlich einer JSON-Datei) und füge unterwegs Attribute hinzu:
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]
Dies gibt mir eine enorme Flexibilität, da das Containerobjekt im Wesentlichen alles speichern kann. Wenn also neue Anforderungen auftauchen, füge ich sie einfach als weiteres Attribut zum DataObj-Objekt hinzu (das ich in meinem Code weitergebe).
Vor kurzem hat mich (von FP-Programmierern) beeindruckt, dass dies eine schreckliche Praxis ist, da es sehr schwierig ist, den Code zu lesen. Man muss den gesamten Code durchgehen, um herauszufinden, welche Attribute DataObj tatsächlich hat.
Frage : Wie kann ich dies für eine bessere Wartbarkeit umschreiben, ohne die Flexibilität zu beeinträchtigen?
Gibt es Ideen aus der funktionalen Programmierung, die ich übernehmen kann?
Ich suche da draußen nach Best Practices.
Hinweis : Eine Idee besteht darin, die Klasse mit allen Attributen zu initialisieren, auf die man voraussichtlich stoßen wird, z
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]
Ist das eigentlich eine gute Idee? Was ist, wenn ich nicht weiß, was meine Attribute a priori sind?