2010-03-23 8 views
7

Ich arbeite an einem Projekt, bei dem eine Mischung aus C# (95%) und C++/CLI (5%) verwendet wird.Lange/zusammengesetzte Namespaces bei Verwendung von C++/CLI

Die Namespace Namenskonvention, die ich anstrebe, ist die gute alte Company.Technology.Etc.. Das funktioniert perfekt für C#. Kann ich das jetzt in C++ Klassen übertragen? Ich lese here, dass zusammengesetzte Namespaces in C++ nicht unterstützt werden.

Bin ich mit dem plumpen

namespace Company { 
    namespace Technology { 
     namespace Etc { 
      ... 
     } 
    } 
} 

um konsequent zu bleiben stecken?

Lohnt es sich zu versuchen, konsistent zu bleiben?

Antwort

8

Ja, du bist fest davon betroffen, siehe link. Meiner Meinung nach lohnt es sich, es zu verwenden, da es besser lesbar und handhabbar ist, Namespaces zu verwenden. Normalerweise mache ich das auch in nativem C++.

2

Arg! Wir haben das hier auch für einen Code getan. Ich hasse es, dass.

Gibt es ernsthafte Verwirrung darüber, wer Ihre Gehaltsschecks unterzeichnet? Was passiert, wenn Company von gekauft wird, oder die Marketingabteilung entscheidet, dass Technology fortan als eTech bekannt sein wird? Wie viel Code muss geändert werden?

Im Allgemeinen bin ich gegen Gebrauch. Aber in Situationen wie dieser, in denen die Namespaces wahrscheinlich nie gemacht wurden und Sie nur zukünftige Codeänderungen speichern, ermutige ich die folgende Zeile, anstatt diese riesige Warze vor jede Referenz zu kleben:

using Company::Technology;

Namespaces sollten im Allgemeinen erstellt werden, wenn Sie mehrere verwandte Klassen und Objekte haben, die versucht sind, denselben Namen in ihrer Kennung zu speichern. Auf diese Weise, anstatt sich auf sie als foo_operation und foo_class zu beziehen, tun Sie foo::operation und foo::class.

2

Um Typen im verschachtelten Namespace zu definieren, müssen Sie dies wie beschrieben tun. Aber Verwendung die Typen, versuchen namespace CTE = Company::Technology::Etc; , dann sollten Sie in der Lage sein, zB Antwort CTE::SomeClass someClass;

1

Das akzeptiert zu tun, ist in Visual Studio 2015 nicht mehr wahr.

Sie können mit allen sidestories die Compilerflag/std: C++ letzte verwenden und die verschachtelten Namespaces erhalten.

Verwandte Themen