Nach Namespace einrücken?
-
Wie handhabt ihr das:
namespace My { namespace Super { namespace Namespace { class C { int data; public: C() : data(0) { // Code auf diesem Level } }; //////////////////////// //<< TOTER LEERRAUM >>// //////////////////////// } } }
vs
namespace My { namespace Super { namespace Namespace { // (kein toter Leerraum) class C { int data; public: C() : data(0) { // Code auf diesem Level } }; } } }
vs
namespace My { namespace Super { namespace Namespace { // (kein toter Leerraum) class C { int data; public: C() : data(0) { // Code auf diesem Level } }; }}}
Oder auch mit weniger als 8 Leerzeichen Einrückung.
Grundsätzlich stört mich, dass durch die Namespace-Einrückung unnötige Leerzeichen entstehen. Mindestens 2 Namespace-Levels sind unvermeidlich, Basis-Namespace + anonymer Namespace habe ich regelmässig.
Meinungen/Erfahrungen zu diesem Thema?
-
Immer gleich, mit 4 Spaces pro Tab:
namespace foo { namespace bar { // ... } }
Wegen "unnötiger" Leerzeichen mache ich mir keine Gedanken.
-
namespace My { namespace Super { namespace Namespace { class C { int data; public: C() : data(0) { // Code auf diesem Level } }; }//namespace Namespace }//namespace Super }//namespace My
-
Wenn der Namensraum eh überall ist, rücke ich die äusserste Ebene nicht ein. Die innere(n) aber schon, wobei mehr als 2 Ebenen äusserst selten sind.
-
namespace My { namespace Super { namespace Namespace { class C { int data; public: C() : data(0) { // Code auf diesem Level } }; }}} // namespace My::Super::Namespace
Nexus schrieb:
Wenn der Namensraum eh überall ist, rücke ich die äusserste Ebene nicht ein. Die innere(n) aber schon, wobei mehr als 2 Ebenen äusserst selten sind.
So schlau ist die Einrückung für Emacs leider nicht von Haus aus und jedesmal von Hand im Sourcefile die Einrückung anzupassen weigere ich mich. Bei Namespaces wird einfach nicht eingerückt und fertig.
-
emacsuser schrieb:
namespace My { namespace Super { namespace Namespace { class… }}} // namespace My::Super::Namespace
Das gefällt mir gut. In den Namespace My::Super::Namespace einzudringen ist für mich nur ein Denkding und sollte in eine Zeile. thx.
-
Ich rücke momentan so ein:
#define LEERES_HILFSMAKRO namespace My { LEERES_HILFSMAKRO // (siehe unten) namespace Super { LEERES_HILFSMAKRO // "" namespace Namespace { // kein Makro // Sobald in einem Namespace mehr steht als nur weitere Namespaces, // wird 1x eingerückt. class C { int data; public: C() : data(0) { // Code auf diesem Level } }; namespace Detail { // Hier noch ein zusätzliches mal, weil ja 1) in "Detail" selbst was steht, // und 2) in "Namespace" auch schon was stand class CDetail {...}; } // namespace Detail --- Namespace zumachen immer mit Kommentar } // namespace Namespace } // namespace Super } // namespace My
Mit MSVC 2005 geht das noch, da kann man die "smart indent" Funktion noch dazu überreden den Inhalt eines Namespace' nicht einzurücken, indem man ein LEERES_HILFSMAKRO in die selbe Zeile schreibt, direkt hinter die öffnende "{".
Mit MSVC >= 2012 geht das leider nicht mehr. Was ich mache sobald wir die ersten Projekte auf >= 2012 portieren weiss ich noch nicht. Ständig gegen die Auto-Formatierung kämpfen macht auch keinen Spass. Jedes Namespace-Level einrücken aber genau so wenig. => Mist.
-
Wie tief ist bei euch die Verschachtelung im Durchschnitt? Habt ihr kaum Bezeichner im Top-Level-Namespace?
-
Meine Projekt ist in Module aufgeteilt.
Alles ist im Namespace my und jedes Modul hat ein eigenes Submodul.
Also my::io, my::stl, etc.
Bis auf das Core-Modul, das ist direkt in my.
Dazu kommen dann noch impl-Namespaces für Implementierungen, also my::stl::impl, für Implementierungsdetails vom stl-Modul und my::impl für die aus dem Core-Modul.
Also 3 maximal.