Numero di classi in uno spazio dei nomi - Odore di codice?


11

Ho una libreria C # che viene utilizzata da diversi eseguibili. Ci sono solo un paio di spazi dei nomi nella biblioteca e ho appena notato che uno degli spazi dei nomi ha parecchie classi. Ho sempre evitato di avere troppe classi in un singolo spazio dei nomi a causa della categorizzazione e, poiché inconsciamente, penso che sia "più bello" avere una gerarchia più profonda di spazi dei nomi.

La mia domanda è: qualcun altro lo considera un "odore di codice" quando uno spazio dei nomi ha molte classi, anche se le classi sono correlate tra loro? Ti impegneresti molto per trovare sfumature nelle classi che consentano la sottocategorizzazione?


8
Se le classi appartengono a detto spazio dei nomi n. Il design è soggettivo per sua stessa natura, quindi è difficile dirlo davvero ed è più una questione di preferenza come hai già identificato.
Chris,

Whatecer StyleCop dice che è la legge. Scommetto che non gli piacerà.
Lavoro

2
Definisci "abbastanza". 10? 100? 1000?
Eric King,

Risposte:


7

Non necessariamente. Se tutte le classi appartengono effettivamente alla categoria definita dallo spazio dei nomi, allora va bene.

Quello che puoi fare è guardare le lezioni e riflettere sulla possibilità di fonderne alcune. Potrebbero essere piccoli gruppi di quelle classi che supportano la funzionalità "familiare" ma sono stati implementati separatamente per alcuni motivi storici. Ora, quando è trascorso un tempo sufficiente, potrebbe essere possibile una composizione migliore.


6

Dovresti evitare di avere troppi spazi dei nomi in quanto ciò rende una libreria molto più difficile da usare e navigare per il programmatore. Inoltre, con molti spazi dei nomi può diventare una sfida per il progettista fornire nomi precisi per ogni spazio dei nomi e anche decidere a quale spazio dei nomi dovrebbe appartenere una determinata classe.

Il modo più semplice per andare avanti è mettere tutte le classi primarie in un singolo spazio dei nomi, mettendo tutte le classi di scenari avanzati in spazi dei nomi secondari; .NET Framework lo fa sempre, vedere System.Collectionse System.Collections.Specializedper buoni esempi di questa pratica.

Con solo uno o due spazi dei nomi di primo livello, il tuo codice diventerà molto più facile da navigare, con le tue classi avanzate o specializzate nascoste fino a quando il programmatore non sarà pronto a scoprirlo.


3

Finché si uniscono e si relazionano l'uno con l'altro, non c'è nessun problema con avere troppe classi in uno spazio dei nomi.

Il fatto che una classe appartenga o meno al proprio spazio dei nomi separato è una questione di preferenza personale.

Cosa sembra più naturale?

Parsers.XML.XmlParser.cs
Parsers.XmlParser.cs

Dipende interamente da come ti piace vedere e invocare il tuo codice.

Personalmente, preferisco spazi dei nomi separati solo quando so che ci sarà più di una singola classe appartenente ad essa.


0

Questo va bene. Il motivo principale per avere spazi dei nomi è evitare collisioni di nomi e solo dopo questo dovremmo pensare all'ambito logico, che è più una questione di scelta personale piuttosto che di regola. Naturalmente sono ben accette alcune regole sensate. Nessuno vuole scorrere tra le classi 3k ~ 4k in uno spazio dei nomi.

Un buon esempio è lo spazio dei nomi std nella libreria standard C ++ che consente di separare i propri algoritmi da quelli standard.


-1. La collisione dei nomi è importante, ma anche il raggruppamento concettuale di classi.
Umlcat,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.