Frage zum Schreibstil bei Namespaces und Klassen



  • Ich hätte mal zwei Fragen zum Schreibstil bei Klassen in Namespaces. Es handelt sich hierbei um Stilfragen, also keine direkt technischen Sachen. Manch einem mag das vielleicht komisch vorkommen, aber mir geht es darum, hierzu den besten Stil zu erfahren.

    Ich habe folgende Header-Datei:

    #ifndef HEADER_H
    #define HEADER_H
    
    namespace Namensraum
    {
        class Klasse
        {
        public:
            void Function ();
        };
    }
    
    #endif
    

    Nun gibt es im wesentlichen drei Möglichkeiten, wie die CPP-Datei dazu aussehen kann:

    #include "Header.h"
    
    namespace Namensraum
    {
        void Klasse::Funktion ()
        {
        }
    }
    

    oder

    #include "Header.h"
    
    void Namensraum::Klasse::Funktion ()
    {
    }
    

    oder

    #include "Header.h"
    
    using namespace Namensraum;
    
    void Klasse::Funktion ()
    {
    }
    

    Alle drei Schreibweisen führen zum Ziel. Doch was ich jetzt einfach gern mal wissen würde: Welche ist denn nun die übliche und die allgemein anerkannte? Welche der drei Schreibweisen ist der beste Stil?

    Wenn ich eine Klasse deklariere, dann benenne ich die Header-Datei und die Include-Guards im Normalfall nach meiner Klasse. Wenn die Klasse also MeineKlasse heißt, dann heißt der Dateiname "Meine Klasse.h" und der Include-Guard heißt MEINE_KLASSE_H. Was müßte ich aber bei einer einzelnen Klasse machen, die in einem Namespace deklariert ist? Also, ich habe die Klasse MeinNamespace::MeineKlasse. Soll ich jetzt die Datei nur nach der Klasse benennen oder sie "Mein Namespace Meine Klasse.h" nennen? Wie sollte man sowas standardmäßig handhaben?



  • NES-Spieler schrieb:

    Alle drei Schreibweisen führen zum Ziel. Doch was ich jetzt einfach gern mal wissen würde: Welche ist denn nun die übliche und die allgemein anerkannte? Welche der drei Schreibweisen ist der beste Stil?

    Es gibt nichts Allgemeines. IMO ist die erste Variante die "richtige", weil sie Namenskonflikte praktisch ausschließt.

    NES-Spieler schrieb:

    Wenn ich eine Klasse deklariere, dann benenne ich die Header-Datei und die Include-Guards im Normalfall nach meiner Klasse. Wenn die Klasse also MeineKlasse heißt, dann heißt der Dateiname "Meine Klasse.h" und der Include-Guard heißt MEINE_KLASSE_H. Was müßte ich aber bei einer einzelnen Klasse machen, die in einem Namespace deklariert ist? Also, ich habe die Klasse MeinNamespace::MeineKlasse. Soll ich jetzt die Datei nur nach der Klasse benennen oder sie "Mein Namespace Meine Klasse.h" nennen? Wie sollte man sowas standardmäßig handhaben?

    Wie gesagt, dafür gibts keinen Standard. Ich mache es so, dass Unternamensräume ein eigenes Verzeichnis bekommen (wobei ich mir die zusätzliche Schreibarbeit in der Implementierungsdatei mit SCons und dem entsprechenden Skripting spare ;)) und der Include-Guard den gesamten Namespace enthält:

    namespace A
    {
    namespace B
    {
    
        class Asdf
        {};
    
    }
    }
    
    -> A_B_ASDF_HPP
    

Log in to reply