Verschachtelte Namespaces



  • Hiho!

    Wenn ich Namespaces verschachtel, kann das aufgrund der Tipparbeit und Einrücktiefe bissel nervig werden:

    namespace foo {
    
    namespace bar {
     // ...
    }
    
    }
    

    Ich habe schon das probiert (geht leider nicht):

    namespace foo::bar {
      // ...
    }
    

    Gibt es eine Möglichkeit das abzukürzen?



  • Ribery@Notebook@Urlaub schrieb:

    Gibt es eine Möglichkeit das abzukürzen?

    Nein, auch wenn ich dies durchaus auch vermisse...



  • wenns dir so wichtig wäre, gibts aber noch makros, womit du dir zur not was basteln könntest (allerdings wird das dann mit dem schließen des namepaces auch wieder hässlich/umständlich/...)

    oder du schreibst es halt auf eine zeile:

    namespace foo { namespace bar {
    
    /*...*/
    
    } } //namespace bar / foo
    

    Einrücktiefe

    Naja - im Source rücke ich NS nicht ein - höchstens im Header - und da sollte es ja nicht gerade in Unlesbarkeit ausarten...

    bb



  • In C++ macht man doch eh nur sehr wenig verschachtelte Namespaces.



  • Bulli schrieb:

    In C++ macht man doch eh nur sehr wenig verschachtelte Namespaces.

    ähm - nein?

    bb



  • unskilled schrieb:

    Bulli schrieb:

    In C++ macht man doch eh nur sehr wenig verschachtelte Namespaces.

    ähm - nein?

    Ich kenne es auch eher so, dass die Namensräume flach gehalten sind (finde ich auch gut).


  • Administrator

    Was heisst wenig? Was heisst flach?
    Mehr als drei habe ich im allgemeinen auch nicht. Selten vielleicht vier, aber fünf waren es, glaub ich, noch nie.

    Grüssli



  • Dravere schrieb:

    Was heisst wenig? Was heisst flach?

    Einer ist ja schon nötig. Zwei, wenn der oberste nur eine Art Sammlung ist (oder das ganze Projekt einen bestimmten NS hat). Drei finde ich schon viel.



  • ich denke, 3-4 sind durchaus noch sinnvoll...
    bsp.: my::ui::output::label

    dann könnte noch detail dazukommen - oder wie auch immer...

    aber unabhängig davon ists bei 2-3 namespaces auch schon hässlich -.-

    bb



  • Bulli schrieb:

    In C++ macht man doch eh nur sehr wenig verschachtelte Namespaces.

    Muss ich im Standard überlesen haben.
    Kannst du mir den entsprechenden § und Absatz sagen, damit ich das nachlesen kann?



  • Badestrand schrieb:

    Dravere schrieb:

    Was heisst wenig? Was heisst flach?

    Einer ist ja schon nötig. Zwei, wenn der oberste nur eine Art Sammlung ist (oder das ganze Projekt einen bestimmten NS hat). Drei finde ich schon viel.

    Also ich finde 5 ist gut. 7 auch. 6 mag ich weniger.



  • hustbaer schrieb:

    Also ich finde 5 ist gut. 7 auch. 6 mag ich weniger.

    Deine Kritik ist unsinnig. Natürlich bestimmen eigene Präferenz und der Kontext (hat niemand angezweifelt), das macht es aber nicht weniger sinnvoll, sich an "Gepflogenheiten" oder wie auch immer du es nennen willst, zu halten. Und in der Regel findet man eben selten tiefe (>2 oder meinetwegen >3) Verschachtelungen bei Namespaces.



  • Badestrand schrieb:

    hustbaer schrieb:

    Also ich finde 5 ist gut. 7 auch. 6 mag ich weniger.

    Deine Kritik ist unsinnig. Natürlich bestimmen eigene Präferenz und der Kontext (hat niemand angezweifelt), das macht es aber nicht weniger sinnvoll, sich an "Gepflogenheiten" oder wie auch immer du es nennen willst, zu halten. Und in der Regel findet man eben selten tiefe (>2 oder meinetwegen >3) Verschachtelungen bei Namespaces.

    du hast ihn falsch verstanden.. er meinte nicht die zahl 😉



  • Badestrand schrieb:

    Natürlich bestimmen eigene Präferenz und der Kontext (hat niemand angezweifelt), das macht es aber nicht weniger sinnvoll, sich an "Gepflogenheiten" oder wie auch immer du es nennen willst, zu halten. Und in der Regel findet man eben selten tiefe (>2 oder meinetwegen >3) Verschachtelungen bei Namespaces.

    So? Also ich kenne es aus vielen größeren Projekten so, das 3 (ggf. 4) üblich sind, daher empfinde ich deine Anmerkung als genauso Unsinnig. Ja, es gibt keine Festlegungen im C++ Standard (aber dennoch ist es kein Unsinn wenn ein Projekt auch etwas tiefere Hierarchien verwendet).

    Ein Beispiel für Namensraumhierarchien die ich auch in C++ des häufigeren gesehen habe (und selbst auch ähnlich verwende): <Firma/Projekt>::<Modul>::<Tier/Schicht> (oder ähnlich).

    cu André



  • asc schrieb:

    aber dennoch ist es kein Unsinn wenn ein Projekt auch etwas tiefere Hierarchien verwendet

    Hab ich auch nirgendwo gesagt, ich fand nur hustbaers Posts blöd.



  • Badestrand schrieb:

    asc schrieb:

    aber dennoch ist es kein Unsinn wenn ein Projekt auch etwas tiefere Hierarchien verwendet

    Hab ich auch nirgendwo gesagt, ich fand nur hustbaers Posts blöd.

    Dann haben sie ihren Zweck zur Hälfte erfüllt.
    Wenn nun noch die Erkenntnis dazukommt, dass die Erwiderung "macht ja eh keiner" auf eine "wie macht man das" Frage mindestens ebenso doof ist ... dann ... ...

    Nein, ich erwarte mir hier eindeutig zu viel!



  • Schönes Miteinander 🙄



  • Badestrand schrieb:

    Schönes Miteinander 🙄

    Wer hat hier was von Miteinander behauptet?!? Na warte, wenn ich den erwische...



  • übrigens noch mal zum thema verschachtelte namespaces braucht man nie:

    boost::asio::ip::tcp::resolver::query

    bb


  • Administrator

    unskilled schrieb:

    übrigens noch mal zum thema verschachtelte namespaces braucht man nie:

    boost::asio::ip::tcp::resolver::query

    Ich wusste jemand wird noch reinlaufen, lol!
    Hier ist boost, asio und ip jeweils ein Namensraum. tcp, resolver und query jeweils Klassen, bzw. typedefs auf solche 😉

    Grüssli


Anmelden zum Antworten