Membervariablennamen



  • Hallo,
    meine Frage wäre, wie ihr bei euch in den Klassen die Variablen und auch die Funktionen benennt.
    Ich persönlich verwende bisher immer einfach Klasse::name für die Variable. Klasse::get_name für den Getter und Klasse::set_name für den Setter.
    Ich verwende ehrlich gesagt lieber nur Kleinbuchstaben und Underscores als CamelCase, einfach, weil es mir optisch besser gefällt.
    Nur bei Qt verwende ich CamelCase, der Einheit halber.
    Nun habe ich mir aber überlegt, dass es ganz nett wäre, wenn ich eine Funktion namens Klasse::name überlade als Getter und Setter zugleich. Dafür müsste ich aber die Variable umbenennen und weiß nicht, wie ich das machen soll. Ich bin absolut kein Freund von der ungarischen Notation, weil ich z.B. vor Klassen diese ganzen Cs unglaublich überflüssig finde. Klassen gehören einfach mit dem ersten Buchstaben groß und fertig.

    Wie haltet ihr das?



  • Häufig wird bei Membervariablen einfach ein Unterstrich '_' angehängt oder vorangestellt (nur doppelte Unterstriche sind generell nicht erlaubt, s.a. What are the rules about using an underscore in a C++ identifier?).



  • Blaada schrieb:

    Nun habe ich mir aber überlegt, dass es ganz nett wäre, wenn ich eine Funktion namens Klasse::name überlade als Getter und Setter zugleich.

    Das mache ich auch so, allerdings nenne ich die Variable weiterhin Klasse::name und den Setter/Getter Klasse::Name().

    Mit deinen Vorgaben (nur Kleinbuchstaben) fällt mir nichts ein, was mir persönlich gefallen würde. Reine Unterstrich-Prefixe und -Suffixe (Klasse::_name oder Klasse::name_) finde ich sehr unschön, als wäre da was abgebrochen. Vermutlich würde ich wohl oder übel Klasse::m_name nehmen (m für member).



  • Ich mache das so:

    class TestClass {
    
       int _Member;
    
       public:
    
       int getMember() const;
       void setMember(int member);
    
    };
    

    Schlussendlich is das Geschmacksache, es sollte einfach im Code immer gleich gehandelt werden.



  • Rookie86 schrieb:

    Ich mache das so: [...]

    Dann lies in Th69s Link doch mal die erste Antwort. 🙂



  • ich zitiere mal aus dem standard:

    3 In addition, some identifiers are reserved for use by C++ implementations and shall not be used otherwise; no
    diagnostic is required.
    (3.1) — Each identifier that contains a double underscore __ or begins with an underscore followed by an
    uppercase letter is reserved to the implementation for any use.
    (3.2) — Each identifier that begins with an underscore is reserved to the implementation for use as a name in
    the global namespace.

    Sollte man auf jeden Fall beachten (3.1)



  • Caligulaminus schrieb:

    Rookie86 schrieb:

    Ich mache das so: [...]

    Dann lies in Th69s Link doch mal die erste Antwort. 🙂

    Wieder etwas gelernt 😃



  • Printe schrieb:

    Blaada schrieb:

    Nun habe ich mir aber überlegt, dass es ganz nett wäre, wenn ich eine Funktion namens Klasse::name überlade als Getter und Setter zugleich.

    Das mache ich auch so, allerdings nenne ich die Variable weiterhin Klasse::name und den Setter/Getter Klasse::Name().

    Alles, was nur den ersten Buchstaben groß hat, ist für mich eine Klasse.
    Das kommt damit also eher nicht in Frage.
    Vermutlich wird es tatsächlich ein angehängter Underscore oder ein vorangestelltes m_.
    Ich hatte die Hoffnung, dass mir vielleicht noch irgendeine ultimative Lösung entgangen sein könnte.

    Aber vielen Dank an euch alle!



  • Ja, mach m_

    m_ ist gut.


Anmelden zum Antworten