Ich habe eine C # -Bibliothek, die von mehreren ausführbaren Dateien verwendet wird. Es gibt nur ein paar Namespaces in der Bibliothek, und ich habe gerade bemerkt, dass einer der Namespaces einige Klassen enthält. Ich habe es aufgrund der Kategorisierung immer vermieden, zu viele Klassen in einem einzigen Namespace zu haben, und weil ich unbewusst denke, dass es "schöner" ist, eine tiefere Hierarchie von Namespaces zu haben.
Meine Frage ist: Betrachtet es jemand anderes als "Codegeruch", wenn ein Namespace viele Klassen hat - auch wenn die Klassen miteinander in Beziehung stehen? Würden Sie sich viel Mühe geben, um Nuancen in den Klassen zu finden, die eine Unterkategorisierung ermöglichen?
Antworten:
Nicht unbedingt. Wenn alle Klassen tatsächlich zu der durch den Namespace definierten Kategorie gehören, ist dies in Ordnung.
Sie können sich die Klassen ansehen und über die Möglichkeit nachdenken, einige von ihnen zusammenzuführen. Es könnte durchaus sein, dass kleine Gruppen dieser Klassen die "Familien" -Funktionalität unterstützen, aber aus historischen Gründen separat implementiert wurden. Wenn nun genügend Zeit verstrichen ist, ist möglicherweise eine bessere Zusammensetzung möglich.
quelle
Sie sollten vermeiden, zu viele Namespaces zu haben, da dies die Verwendung und Navigation einer Bibliothek für den Programmierer erheblich erschwert. Bei vielen Namespaces kann es für den Designer außerdem zu einer Herausforderung werden, genaue Namen für jeden Namespace anzugeben und zu entscheiden, in welchen Namespace eine bestimmte Klasse gehören soll.
Der einfachste Weg besteht darin, alle Primärklassen in einem einzigen Namespace zusammenzufassen und alle erweiterten Szenarioklassen in Sub-Namespaces zu platzieren. Das .NET Framework tut dies die ganze Zeit finden Sie in der
System.Collections
undSystem.Collections.Specialized
für gute Beispiele für diese Praxis.Mit nur einem oder zwei Namespaces der ersten Ebene wird die Navigation in Ihrem Code viel einfacher, da Ihre erweiterten oder spezialisierten Klassen so lange ausgeblendet sind, bis der Programmierer bereit ist, solche zu entdecken.
quelle
Solange sie zusammengehören und sich aufeinander beziehen, ist es kein Problem, zu viele Klassen in einem Namespace zu haben.
Unabhängig davon , ob eine Klasse gehört in einem eigenen ist separater Namensraum ist eine Frage des persönlichen Geschmacks.
Was sieht natürlicher aus?
Es hängt ganz davon ab, wie Sie Ihren Code sehen und aufrufen möchten.
Persönlich bevorzuge ich separate Namespaces nur, wenn ich weiß, dass mehr als eine Klasse dazu gehört.
quelle
Das ist in Ordnung. Der Hauptgrund für Namespaces besteht darin, Namenskollisionen zu vermeiden. Erst danach sollten wir über den logischen Umfang nachdenken, der eher eine Frage der persönlichen Wahl als der Regel ist. Natürlich sind einige vernünftige Regeln willkommen. Niemand möchte in einem Namespace durch 3k ~ 4k Klassen scrollen.
Ein gutes Beispiel ist die std - Namespace in der C ++ Standard Library , die Sie Ihre eigenen Algorithmen von den Standard trennen können.
quelle