Frage zu Stil (Methoden einer Klasse)
-
Hallo, ich wollte mal Fragen, welchen Stil ihr benutzt für Methoden, die Objekte einer Klasse ändern.
class Klasse { //... public: void Variante1 () { /*was mit dem Objekt machen*/ } Klasse& Variante2 () { /*was mit dem Objekt machen*/ return *this; } };Gibt es Unterschiede/Vorteile zwischen den Varianten? Welche benutzt Ihr?
-
stilfrage schrieb:
Gibt es Unterschiede/Vorteile zwischen den Varianten? Welche benutzt Ihr?
Normalerweise die erste. Ausnahmen stellen bei mir solche Methoden dar, die man üblicherweise nacheinander kombiniert (z.B. einige operatoren...).
// Hier macht es Sinn das verketten zu erlauben cout << "a" << 1 << "b" << 2; // Das wiederum halte ich für nicht sinnvoll cout << person.SetName("Bernd").SetStrasse("Testweg 2");Sprich: Ich wende es vor allem da an, wo man es "üblicherweise" erwartet.
cu André
-
stilfrage schrieb:
Gibt es Unterschiede/Vorteile zwischen den Varianten?
Die Benutzung von Variante 2 verwirrt im allgemeinen Gebrauch eher. Es sei natürlich denn, man entwirft die Klasse explizit als "internal DSL" (so wie hier).