2009-07-21 8 views
17

Ich habe häufig Konflikte zwischen einem Namespace und einer Klasse in diesem Namespace benennen und möchte eine beste Praxis wissen, dass dies für den Umgang mit, wenn es sinnvoll erscheint, diese Namen in erster Linie zu verwenden, neben zufällige Präfixe hinzufügen.Wie vermeiden Sie, den gleichen Namen für eine Klasse und ihren Namespace zu haben, z. B. Technology.Technology?

Es schien sinnvoll, einen Namespace von Models.Technology mit Dutzenden von Technologieklassen (dh Waffen-, Landwirtschafts-, Recyclingtechnologien) und einigen verwandten Schnittstellen zu haben. Ich entschied mich außerdem für eine abstrakte Technologieklasse im Technologie-Namensraum, von der alle Technologien abgeleitet sind.

Doch dies zwingt mich Code wie folgt zu verwenden:

public Technology.Technology research(Technology.Technology tech) {...} 

und ebenfalls:

public Building.Building build(int count) {...} 

Durch die Art und Weise habe ich nicht meinen Namespace Technologies nennen, da ich diesen Begriff an anderer Stelle verwenden, wie ein Wrapper für eine Liste der verfügbaren Technologien ...

+0

ich die Liste der Technologien zu 'TechnologyList' umbenennen würde, und gehen Sie für' Technologies.Technology'. –

Antwort

18

Ohne genauere Angaben auf, wenn dieses Problem auftritt es schwer ist, Sie einige allgemeine Ratschläge zu geben.

Aber ich werde nehmen an, Sie haben dieses Problem, wenn Sie eine Basisklasse in Ihrem Namensraum haben, mit anderen Klassen von ihm erben. Wenn dies der Fall ist, könnten Sie Ihre Klasse BaseTechnology (Basisklasse) oder AbstractBuilding (abstrakte Klasse) oder IAnimal (Schnittstelle) aufrufen. Dies gibt Ihnen sogar mehr Klarheit, da Sie im Namen Ihres Typs etwas Wichtiges angeben.

1

Nun, ob Ihr Name Ihre Namensräume wie die ns MyNamespace oder Sie nennen Sie Klasse c MyClasse. Ich bin personnaly für den Namensraum zu benennen, weil es nicht etwas, das Sie viel im Code verwenden.

Sie können auch TechnologyBase oder AbstractTechnology für die Benennung Ihrer abstrakten Hauptklasse verwenden, die mit dem Namen Ihres Namespace in Konflikt steht, was ich zur Einhaltung der logischsten Namenskonvention empfehle.

1

Ein allgemeiner Rückzieher ist Ihr Namensraum „Unternehmen“ oder etwas zu nennen. Ein weiterer

0

fertig aus, rufen Sie einfach den Namensraum nach dem Namen des Unternehmens Sie arbeiten für.

+1

Ich glaube nicht, dass das funktioniert, weil ich über das letzte Wort des Namensraums spreche. ex: Microsoft.Stuff.Technologie. Und hier kollidiert Technologie mit einer abstrakten Technologieklasse darin. –

+0

Eigentlich könnten/sollten Sie alle Ihre Namespaces mit Ihrem Firmennamen voranstellen, aber das löst das Problem nicht. –

-1

Was Technology.Tech

oder:

HumanBeing.Human

oder:

CocaCola.Coke?

Was ich tun möchte, ist eine einfache Regel. Wo ich die ersten beiden Buchstaben eines Wortes zu verwenden, gefolgt von den beiden letzten Buchstaben des Wortes wie:

Technology.Tegy

Es kann keinen Sinn machen, sondern weil die gleiche Regel gilt immer, es bedeutet, weniger Verwirrung, und es gibt keine Notwendigkeit, sich viel zu erinnern, außer für diese eine Regel. Das ist nur meine Vorliebe.Ich mag es, wenn Dinge kryptisch aussehen, also wenn das nicht dein Stil ist - dann ist diese Antwort vielleicht nicht für dich.

Ich hoffe, das hilft ... Zumindest ein wenig ... :)

+1

Sie haben keinen Geschmack .... – Denis

Verwandte Themen