Antwort des dcastro ist gut, aber einige Expansion nutzen könnten:
nicht quantifizierbare ist zurückzukehren; Lassen Sie uns das quantifizieren. Eine Eigenschaft sollte nicht mehr als, sagen wir, zehnmal länger dauern, als ein Feld zu holen.
- es keine Verbindung zu externen Ressourcen (Datenbanken, Dienstleistungen, etc.)
Diejenigen langsam sind und so typischerweise unter der ersten Regel fallen, aber es ist ein zweiter Aspekt dazu: Scheitern sollte selten oder unmöglich sein. Property-Getter sollten keine Ausnahmen auslösen.
- es hat keine Nebenwirkungen
ich das beobachtbaren Nebenwirkungen klären würde. Eigenschaftsgetter haben oft den Nebeneffekt, dass sie die Eigenschaft einmal berechnen und für später speichern, aber das ist kein beobachtbarer Nebeneffekt.
Nicht nur ist es philosophisch schlecht, dass eine Eigenschaft eine beobachtbare Nebenwirkung hat, es kann auch Ihre Debugging-Erfahrung durcheinander bringen. Denken Sie daran, wenn Sie sich ein Objekt im Debugger standardmäßig ansehen, ruft der Debugger seine Eigenschaften-Getter automatisch auf und zeigt die Ergebnisse an. Wenn dies langsam ist, verlangsamt dies das Debugging. Wenn dies fehlschlägt, wird die Debug-Erfahrung mit Fehlermeldungen gefüllt. Und wenn dies einen Nebeneffekt hat, dann ändert das Debuggen des Programms die Funktionsweise des Programms, was es sehr schwierig macht, den Fehler zu finden. Sie können natürlich die automatische Eigenschaftsbewertung deaktivieren, aber es ist besser, zuerst gute Eigenschaften zu entwerfen.
Mir ist keine spezifische Richtlinie für Eigenschaften bekannt, aber viele Best-Coding-Praktiken verwenden 7-10 Zeilen als die bevorzugte Anzahl von Zeilen in einer Methode. –
Was macht dein Getter? –
Gute Frage. Der Getter wird in einer Klasse verwendet, die ähnliche Funktionen wie der folgende Artikel enthält: http://umerpasha.wordpress.com/2013/06/13/c-code-to-get-latest-tweets-using-twitter-api- 1-1/Sie werden dort viele Stiche bemerken (zum Beispiel basisString), die von anderen Mitgliedern der Klasse erstellt werden können (zum Beispiel alle OAuth-Tokens). –