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).


Anmelden zum Antworten