2010-09-17 19 views
11

ich damit beauftragt, einen Namen wählen, die der interne Name unserer Architektur in Kraft sein wird. Ich nehme diese Verantwortung ernst, da ich mit vielen "schlechten" Namespaces gearbeitet habe und keinem anderen etwas zufügen möchte.Was sollte ich wissen, wenn ich einen Namensraumnamen auswähle?

Was macht mir einen "schlechten" Namensraum?

In Bezug auf den menschlichen Faktoren:

  • ein Akronym, das ist im Wesentlichen bedeutungslos: DDL, MOS, etc
  • Ein Namensraum, der von einem anderen Anbieter, wie Office oder Text oder IO mit einem gemeinsamen einem kollidiert
  • Ein Namespace, der schwer zu buchstabieren oder auszusprechen für nicht-englische Muttersprachler ist, weil es entweder ein Fremdwort oder ein Eigenname ist: Vancouver

und so weiter.

Ich fühle mich wohl, einen Namespace in Bezug auf beschreibende Fähigkeit und mnemonic auszuwählen. Ich frage mich, was die technischen Folgen der Namensraum-Namen sein kann. Welche Probleme könnten beispielsweise aus dem Namespace _ entstehen, der ein zulässiger C# -Namespacename ist? Was ist mit einem einzelnen Buchstaben, wie e? Gibt es Namespaces, die CodeDom oder Reflector passen? Führen einige Namespaces, die in C# zulässig sind, zu Problemen in anderen .Net-Sprachen? Ist es möglich, einen Namespace zu wählen, der aus irgendeinem Grund nicht Mono-kompatibel ist? Haben Sie mit einem Namensraum gearbeitet, der Ihr Leben aus Gründen erschwert hat, die den Compiler oder Visual Studio oder das Windows- (oder Linux-) Dateisystem betreffen?

Vielen Dank für das Lesen und danke im Voraus für jede Hilfe!

+1

IMO, C# Namensräume sind perfekt, so dass ich kopieren Sie sie einfach. Anstelle von 'System' verwende ich den Firmennamen oder den Produktnamen. Und das ist alles, was ich verändere. – BrunoLM

+0

@BrunoLM: Perfekt ist ein sehr starkes Wort, aber ich stimme dem zu. MS Namespaces sind ziemlich gut durchdacht und organisiert. Sie können sich aber auch anschauen, wie Java Namespaces zusammenführt. Da ich von einem .NET-Hintergrund komme, denke ich, dass die Organisation von Java immer noch besser ist, IMHO. –

+0

Ich liebe, dass jemand diese Frage gestellt hat. Zuerst dachte ich, es ist so eine kleine Sache; Aber eigentlich sollten wir uns als Softwareentwickler immer bemühen, gute Designentscheidungen zu treffen. Dies ist ein perfektes Beispiel dafür. Und ich weiß, dass viele Bibliotheken da draußen unverständliche Namensraumnamen haben. –

Antwort

18

Für nicht-technische Sachen, lesen Sie die Frameworks Design Guidelines. Sie haben viele gute Ratschläge. Kurz:

  • Beginnen Sie mit einem Firmennamen.
  • wählen stabil (versionsunabhängig) Namen. FrobCorp.FrobozzV2.Utilities ist schlecht.
  • wählen Namen, die den Code Zweck eher als die Politik der Organisation widerspiegeln, die es produziert. FrobCorp.AdvancedResearchDivision.CambridgeOffice ist schlecht; Die AdvancedResearchDivision könnte morgen umbenannt werden und das Cambridge-Büro könnte verlegt werden.
  • Verwendung Pascal, es sei denn, dass Ihr Branding verletzt. FrobCorp.jFrobozzle sieht furchtbar aus, aber FrobCorp.Jfrobozzle sieht noch schlimmer aus.
  • Verwenden Plural wenn geeignet
  • und so weiter.

Es gibt viel mehr guten Rat in den Richtlinien, die ich hier nicht reproduziert habe. Geh und lies sie.

Es klingt jedoch wie Sie haben die nicht-technischen Sachen runter. Eine der Ratschläge in den Richtlinien lautet "Nenne keinen Typ wie seinen Namensraum". Das ist ein guter Rat, nicht nur, weil dies für die Leser verwirrend ist; Es gibt einen guten technischen Grund.

Für die technischen Gründe, warum der gleiche wie sein Namensraum eine Art Namensgebung eine schreckliche Idee, meine Artikel zu diesem Thema finden Sie unter:

http://blogs.msdn.com/b/ericlippert/archive/tags/namespaces/

+0

Dies ist eine Antwort zu Hause. –

+0

Die Richtlinie, nicht den gleichen Namen wie der Typ für einen Namensraum zu haben, wurde oft von einem Programmierer hier gemacht, und als ich es mehrmals erwähnte, wurde ich von ihm einfach herabgesehen, weil er das Wort Programmierer in seinem Titel hat. Er sagte mir, dass diese Richtlinien für die durchschnittlichen Leute da sind, fortgeschrittene Leute können sie brechen, wenn sie es für richtig halten. Und hinzugefügt sogar MS verwendet sie nicht wirklich selbst. Was ist in solchen Situationen zu tun, in denen ich weiß, dass die Codequalität aufgrund von Ignoranz leidet? Weil Sie wissen, sobald die Änderung eingetreten ist, ist es risikoreicher, sie später zu ändern. –

+2

@Joan: Es ist wichtig, den Unterschied zwischen einer "Regel" und einer "Richtlinie" zu kennen und zu wissen, wann der richtige Zeitpunkt ist, Regeln oder Richtlinien zu missachten, um ein größeres Ziel zu erreichen. Das macht die Autorität jedoch nicht zu einem soliden Argument! Microsoft hat gelegentlich gegen diese Richtlinien verstoßen, und viele dieser Verstöße werden in den kommentierten Frameworks Design Guidelines als Beispiele dafür genannt, "warum Sie das nie tun sollten, weil unser Fehler uns sehr viel Schmerz bereitet hat". Brad Abrams gibt das Beispiel von Microsoft, das ein organisatorisches Detail in einem Namensraum als eine warnende Geschichte setzt. –

0

Stellen Sie sicher, dass der Namespace so eindeutig wie möglich gestartet wird, um die Art von Kollision zu vermeiden, die Sie beschrieben haben. zB:

YourCompanyName.subnamespace.subsubnamespace 
YourLastName.YourFirstName.subnamespace.subsubnamespace 
-2

Gehen Sie mit dem Namen, was auch immer Einheit sind Sie in in Ihrem Unternehmen

+0

Aus welchem ​​* technischen Grund *? Etwas, das das .Net-Entwicklungssystem betrifft, keine Menschen –

+0

Keine, soweit ich weiß. Es ist einfach die Konvention. Zeugen Microsoft, Crystal, etc. – Beth

+0

Siehe Erik Lipper die Antwort, warum dies eine schlechte Idee ist. –

0

nicht zu hart versuchen, um es gleich beim ersten Mal. Egal, wie clever oder clean Sie Ihre Benennungskonvention und -struktur denken, Sie werden Dinge umbenennen und verschieben. Ist einfach so.

Für Anfänger ist es am wichtigsten sicherzustellen, dass die Wahrscheinlichkeit einer Kollision in Ihrem Basisnamen gering ist. Später können Sie den Namensraum leicht mit Tools wie ReSharper et al.

Verwandte Themen