2009-06-17 5 views
2

Können sagen, wir haben die folgenden Datei und [Ordner] Struktur in einem Projekt mit einem Haupt-Namensraum von MyNamespace:richtig zuweisen Namensräume (mit ReSharper Vorschlägen)

  • [Entities]
    • Article.cs
    • Category.cs
  • [Schnittstellen]
    • IReviewable.cs
    • ISearchable.cs
  • Enumerations.cs

Nach ReSharper Vorschlägen, der Namensraum des Klassen Article und Category sollte MyNamespace.Entities, der Namensraum von IReviewable und ISearchable sollte MyNamespace.Interfaces und der Namespace für die Enumerations Klasse sein einfach MyNamespace sein sollte.

Dies liegt daran, dass die Vorschläge von ReSharper auf der Ordnerstruktur basieren und die Vorschläge darauf basieren, wo sich die Datei in der Struktur befindet.


Was halten Sie von den oben genannten Namespaces? Denken Sie, dass es richtig ist, Namespaces für Klassen (Interfaces etc ...) ausschließlich auf ihrem Speicherort zu implementieren?

Oder denken Sie, dass Namespace-Deklaration nicht nur von der Ordnerstruktur abhängen sollte?

Persönlich würde ich alle oben genannten Dateien unter dem einzigen MyNamespace setzen, da sie alle irgendwie miteinander verwandt sind.

Antwort

10

Ich denke, ReSharper Vorschläge sind in Ordnung. Ich denke, es ist ein Fehler, Klassen usw. nach dem zu gruppieren, was sie sind, statt nach dem, was sie tun.

Eine Analogie ist das Gruppieren von Dokumenten in den Unterordnern Word, Excel usw. statt nach Projekt oder einer anderen funktionalen Gruppierung.

4

Beachten Sie, dass ReSharper jedem Ordner in Ihrem Projekt eine "Namespace Provider" -Eigenschaft hinzufügt. Sie können diese Eigenschaft für einen Ordner, der für die Organisation verwendet werden soll, jedoch nicht zu Namespaces beitragen, auf false festlegen.

+0

Dies ist eine große Chance, Organisieren Sie einen Website-Namespaces. Die Struktur Ihrer Website ist fest, wenn Sie einen Appresort-Namespace-Vorschlag App_code.SomeFolderName endgültig löschen können. – klashar

0

Es ist eine gute Übung, Dateien in sinnvollen Ordnern zu organisieren und Namespaces aus dieser Struktur aufzubauen. Java hat diese Regel seit vielen Jahren befolgt und es funktioniert gut.

Beachten Sie auch, dass, wenn Sie wie oben eine Menge Unternamensräumen haben, ist es Zeit Nivellierungs zu prüfen ist, wie von Patrick vorgeschlagen (na ja, wissen Sie ihn?)

http://codebetter.com/blogs/patricksmacchia/archive/2009/02/15/re-factoring-re-structuring-and-the-cost-of-levelizing.aspx

Verwandte Themen