Wenn ein Getter eine Eigenschaft zurückgibt, z. B. eine List
anderer verwandter Objekte zurückgibt, sollten diese Liste und ihre Objekte unveränderlich sein, um Code außerhalb der Klasse zu verhindern, indem der Status dieser Objekte geändert wird, ohne dass das Hauptobjekt dies weiß?Betrachtet man die Kapselung von Objekten, sollten Getter eine unveränderliche Eigenschaft zurückgeben?
Zum Beispiel, wenn ein Contact
Objekt, ein getDetails
Getter hat, die eine List
von ContactDetails
Objekte zurückgibt, dann beliebigen Code aufrufen, dass Getter:
ContactDetail
Objekte aus dieser Liste entfernen kann, ohne dieContact
Objekt zu wissen, von es.- kann jedes
ContactDetail
Objekt ohne dasContact
Objekt ändern, das davon kennt.
Also was sollen wir hier tun? Sollen wir einfach dem aufrufenden Code vertrauen und leicht änderbare Objekte zurückgeben oder auf die harte Tour gehen und eine unveränderliche Klasse für jede veränderbare Klasse erstellen?
Das ist eine interessante Unterscheidung zu machen - Wetter oder nicht Sie besitzen den Code. Ich denke NIEMALS an etwas außerhalb der Klasse, die ich schreibe, als sicher. Ich bin nicht davon überzeugt, dass es einen Vorteil beim Kodieren mit der Annahme gibt, dass jemand, der dich anruft, es immer richtig machen wird ... Kann es tatsächlich schneller sein, ein paar Zeilen zu überspringen, wenn es einmal in deiner Karriere 20 oder 30 Minuten kostet Debuggen? Die Eingabe dieser zusätzlichen Zeilen ist praktisch kostenlos im Vergleich zu der Zeit, die Sie für ein Projekt ausgeben. –