Stilfrage: Namespace in EXE nötig?
-
Hallo zusammen,
Mal eine Stilfrage für die C# Runde. Eine Applikation (EXE, keine DLL), wo alle Klassen, Interfaces, usw.
internal
sind, muss diese ihre Klassen (usw.) in einem eigenen Namensraum definieren?Bei einer Bibliothek ist es klar, da es sonst zu Konflikten zwischen den Bibliotheken kommt. Aber bei einer EXE exportiert man nichts. Den einzigen Vorteil von Namensräumen sehe ich aktuell darin, dass man so eine bessere Strukturierung und damit Übersicht erhält. Wenn die Applikation aber eher klein ist, ist diese nicht nötig. Gibt es dann noch einen Vorteil?
Und braucht eine Applikation einen Basisnamensraum? Wenn man z.B. ViewModels erstellt und diese in den Namensraum
ViewModels
setzt, dann dürfte es sehr unwahrscheinlich sein, dass hier ein Konflikt entsteht. Keine Bibliothek definiert so einen Namensraum. Man braucht somit nicht einen Basisnamensraum, wie:MyApplication.ViewModels
.Hintergrundinfo: Ich weiss nie, was für einen Basisnamensraum ich für die EXE wählen soll. Den Namen des Programmes finde ich oft eher schlecht als recht. Aktuell wollte ich gerade wieder einen kleinen Prototyp schreiben und da ging mir diese Frage gerade durch den Kopf
Bin gespannt auf eure Gedanken.
Grüssli
-
Ich verwende i.d.R. auch keinen projektweiten Basisnamensraum. Also auch nur ViewModel statt MyApplication.ViewModels. Aber alles liegt in irgendeinem Namensraum. Allein schon wegen der Einrückung
Aber selbst wenn Du einen blöden Namen wählst, mit zwei Clicks ist er projektweit geändert. Also kein Problem oder?Dravere schrieb:
Hintergrundinfo: Ich weiss nie, was für einen Basisnamensraum ich für die EXE wählen soll. Den Namen des Programmes finde ich oft eher schlecht als recht. Aktuell wollte ich gerade wieder einen kleinen Prototyp schreiben und da ging mir diese Frage gerade durch den Kopf
Meine Programme (die EXEn) auf der Arbeit heißen nur noch "Application". Alles was irgendwie wiederverwendbar ist, kriegt ganz allgemeine und keine projektbezogenen Namen.
-
Mir fällt aber gerade noch ein, dass ich es in letzter Zeit mit Unternamensräumen und Unterordnern in den Projekten etwas übertreibe. Aktuell habe ich eine relativ kleine DLL (geschätzt 3000 Zeilen oder so) und alles in 6 oder 7 Ordner und entsprechend viele Namensräume aufgeteilt.
Weiß nicht ob das sinnvoll ist. Muss mal schauen wie es sich später "anfühlt".
-
Dravere schrieb:
Hallo zusammen,
Gibt es dann noch einen Vorteil?Gibt es denn einen Nachteil den du daraus ziehst?
Und den Projektnamen als Namensraum zu nutzen halte ich jetzt überhaupt nicht für dramatisch, muss ich ehrlich gestehen. Man sieht das recht häufig in vielen Firmen die mit .NET Entwickeln. Also ein Namensraum mehr oder weniger halte ich jetzt nicht dramatisch. Viel mehr sollten sie mit Bedacht gewählt werden.
-
Wir benutzen für den Root Namespace immer den internen Entwicklungsnamen des Projektes. Wenn es eine Library ist dann hat diese auch seinen eigenen Namen.
Das hat mehrere Vorteile
1. Es bleibt dauerhaft gültig. Auch wenn wenn das Produkt bevor es zum Kunden geht noch ein neuen bzw angepassten Namen bekommt.
2. Wenn man eine Library einbindet sieht anhand des Namensraumes direkt aus welchem Projekt es stammt.Schon in Visual Studio 2008 (oder älter, keine Ahnung, hatte bei 2005 kein C# gemacht) kann man Namensräume automatisch eintragen lassen, also ist es keine Mehrarbeit sinnvolle Namensräume zu verwenden.
-
Firefighter schrieb:
Viel mehr sollten sie mit Bedacht gewählt werden.
Genau das ist ja das Problem. Einfach den Namen der Applikation zu nehmen, halte ich nicht für "mit Bedacht gewählt"
@David W,
Library ist klar, das ist keine Frage. Da verwende ich meistens etwas im Sinne von:
[Firmenkürzel].[Obere Kategorie].[Untere Kategorie]So habe ich z.B. Namensräume à la:
Dsi.Utilities
Dsi.Utilities.Wpf
Dsi.Utilities.Mvvm
usw.David W schrieb:
Schon in Visual Studio 2008 (oder älter, keine Ahnung, hatte bei 2005 kein C# gemacht) kann man Namensräume automatisch eintragen lassen, also ist es keine Mehrarbeit sinnvolle Namensräume zu verwenden.
Die Mehrarbeit ist sowieso völlig egal. Ich benutze noch zusätzlich Resharper Live Templates. Da werden die Namensräume gleich auch nach dem Ordner richtig eingefügt.
Mir geht es wirklich nur darum einen sinnvollen Namen zu finden. Wenn man zum Beispiel ein CD Filing System erstellt und dann den Applikationsnamensraum
CdFilingSystem
nennt ... ich weiss einfach nicht. Gut der Applikationsname is schon scheisse. Ich hasse es Namen auszuwählen...Grüssli
-
Dann wähl doch deine Namensräume so wie MS. Packe das zusammen was zum System gehört usw. Kannst es auch in UI und Core aufteilen. Also Möglichkeiten sind da viele