2009-07-21 13 views
17

Ho spesso conflitti di denominazione tra uno spazio dei nomi e una classe all'interno di tale spazio dei nomi e vorrei conoscere una best practice per gestirli quando sembra opportuno utilizzare questi nomi in primo luogo, oltre ad aggiungere prefissi casuali.Come evitare di avere lo stesso nome per una classe e il suo spazio dei nomi, come Technology.Technology?

Sembrava avere senso avere uno spazio dei nomi Models.Technology, con dozzine di classi di tecnologia (ad esempio, armi, tecnologie agricole e di riciclaggio) e alcune interfacce correlate. Ho anche deciso di avere una classe astratta tecnologica, nel namespace tecnologico, da cui derivano tutte le tecnologie.

Tuttavia, questo mi sta costringendo a usare codice come questo:

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

e allo stesso modo:

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

Tra l'altro non mi ha chiamato il mio spazio dei nomi Technologies da quando uso questo termine anche altrove un wrapper per un elenco di tecnologie disponibili ...

+0

vorrei rinominare l'elenco delle tecnologie a 'TechnologyList', e andare per' Technologies.Technology'. –

risposta

18

Senza indicazioni più precise su quando si incontra questo problema, è difficile dare un consiglio generale.

Ma suppongo che tu abbia questo problema quando hai una classe base nel tuo spazio dei nomi, con altre classi che ne ereditano. In questo caso è possibile chiamare la classe BaseTechnology (classe base) o AbstractBuilding (classe astratta) o IAnimal (interfaccia). Questo ti dà anche più chiarezza dato che nel nome del tuo tipo hai specificato qualcosa di importante.

1

Beh, se i vostri nome spazi dei nomi del genere ns MyNamespace o si è il nome classe c MyClasse. Personalmente sono favorevole a nominare lo spazio dei nomi, perché non è qualcosa che usi molto nel codice.

È inoltre possibile utilizzare TechnologyBase o AbstractTechnology per denominare la principale classe astratta che è in conflitto con il nome del proprio spazio dei nomi, che è quello che consiglio di mantenere la convenzione di denominazione più logica.

1

Una fuoriuscita generale è denominare lo spazio dei nomi "Entità" o qualcosa del genere.

0

Un altro problema, basta chiamare lo spazio dei nomi dopo il nome della società per cui si sta lavorando.

+1

Non penso che funzionerà perché sto parlando dell'ultima parola del namespace. ex: Microsoft.Stuff.Technology. E qui la tecnologia è in conflitto con una classe astratta di tecnologia. –

+0

In realtà si potrebbe/dovrebbe anteporre tutti gli spazi dei nomi con il nome della propria azienda, ma ciò non risolve il problema. –

-1

Che dire Technology.Tech

o:

HumanBeing.Human

o:

CocaCola.Coke?

Quello che mi piace fare è avere una semplice regola. Dove io uso le prime due lettere di una parola, seguito dalle ultime due lettere di quella parola come:

Technology.Tegy

Può non ha alcun senso, ma perché la stessa regola vale sempre, significa meno confusione, e non c'è bisogno di ricordare molto, tranne quella regola. Questa è solo la mia preferenza.Io, a me piacciono le cose per sembrare criptico, quindi se questo non è il tuo stile - allora forse questa risposta non fa per te.

Spero che questo aiuta ... Atleast un po '... :)

+1

Non hai gusto .... – Denis

Problemi correlati