Ich bin in ein Projekt gesprungen und sehe, dass die anderen Entwickler den Setzern der synthetisierten Eigenschaften eine Menge Logik hinzufügen. Ich verstehe, wie das funktioniert, aber ich denke, dass es schwierig ist, den Programmfluss zu verstehen. Wenn ich den Code lese, self.something = whatever
überprüfe ich immer, ob something
der Setter überschrieben ist.
Wie ist Ihre Meinung zu diesem Thema? Glauben Sie, dass dies ein Zeichen für eine schlechte Architektur oder eine aufwändige Lösung ist?
Ich würde mich freuen, mehr darüber zu lesen, wenn Sie relevante Links / Quellen haben. Es ist einfach zu schwierig, gute Google-Ergebnisse zu erzielen. Deshalb habe ich mich entschlossen, auch hier zu fragen.
Vielen Dank für jede Antwort. Bitte beachten Sie, dass ich über Ziel C spreche, falls Sie das Tag nicht gesehen haben (auch wenn dies meines Erachtens kein sprachspezifisches Problem sein sollte).
Antworten:
Nein
Eigenschaften wurden erfunden, um Klassendesignern zu ermöglichen, Logik an eine bequeme Schnittstelle für den Feldzugriff und die Zuweisung anzuhängen.
Wie viel ist zu viel? Es hängt von den Verantwortlichkeiten der Klasse ab. Hier sind einige Dinge, die sinnvoll sind, um sie in einen Eigenschaften-Setter einzufügen:
Das Programmieren ist einfacher, wenn Klassen über Schnittstellen verfügen, die verdeutlichen, was die Klasse kann, ohne dass der Aufrufer darüber nachdenkt, wie dies ausgeführt wird. Durch das Setzen der Logik hinter Eigenschaftssetzer können Klassen ihre Implementierung hinter einer einfachen Schnittstelle verbergen. Für einige Klassen sind keine Methoden erforderlich. Drehen Sie einfach die Knöpfe, indem Sie die Eigenschaften einstellen, und lesen Sie die Ausgabe, indem Sie die Eigenschaften abrufen.
quelle
Setter werden normalerweise verwendet, um den Zustand eines Objekts ohne nennenswerte Nebenwirkungen oder umfangreiche Berechnungen zu ändern. Verwenden Sie hierfür Methoden und Funktionen. Der Hauptgrund für die Implementierung des Setters ist das Ändern und Beibehalten eines gültigen Status . Daher ist es absolut in Ordnung, den Bereich zu begrenzen, Flags zu setzen, um eine Neuberechnung anzufordern, oder verwandte Eigenschaften anzupassen.
quelle
Ich weiß nicht, was Ziel C angeht, aber wie Sie sagen, scheint es eine generische Frage für jede OO-Sprache zu sein. Zuallererst und tatsächlich damit verbunden ist die Frage, ob Setter und Getter an erster Stelle stehen, umstritten (in einigen Fällen ist ihre Existenz durch die Verwendung eines Frameworks oder einer Bibliothek gerechtfertigt).
Ich glaube, dass der Name der Methode erklären sollte, was die Methode und alle Methode tut. Darüber hinaus sollte die dieser Methode zugeordnete Dokumentation sie ausführlicher beschreiben. In diesem Sinne sollte ein Methodenname in der Form "set" + {noun} keine anderen Nebenwirkungen haben als das Festlegen des Werts einer Variablen, und dies sollte die einzige damit verbundene Aktion sein. Die Überprüfung, ob das Argument gültig ist, ist akzeptabel, sollte jedoch in der Dokumentation beschrieben werden.
quelle