Numero di classi in uno spazio dei nomi - Codice olfattivo?

10

Ho una libreria C # utilizzata da diversi eseguibili. Nella libreria ci sono solo un paio di spazi dei nomi, e ho appena notato che uno degli spazi dei nomi ha alcune classi in esso. Ho sempre evitato di avere troppe classi in un singolo spazio dei nomi a causa della categorizzazione e, poiché inconsciamente, penso che sia più "carina" 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 si riferiscono l'una all'altra? Vuoi fare un sacco di sforzi per trovare sfumature nelle classi che consentono la sottocategorizzazione?

    
posta Tim Claason 03.02.2011 - 18:22
fonte

4 risposte

6

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

Quello che puoi fare è guardare le classi e riflettere sulla possibilità di fonderne alcune. Potrebbe essere che piccoli gruppi di queste classi supportino la funzionalità "familiare", ma sono stati implementati separatamente per alcune ragioni storiche. Ora quando è trascorso un tempo sufficiente, potrebbe essere possibile una composizione migliore.

    
risposta data 03.02.2011 - 18:29
fonte
6

Dovresti evitare di avere troppi spazi dei nomi, poiché questo rende molto più difficile l'utilizzo di una libreria e la navigazione per il programmatore. Inoltre, con molti spazi dei nomi può diventare una sfida per il progettista fornire nomi accurati per ogni spazio dei nomi e anche decidere in quale spazio dei nomi deve appartenere una particolare classe.

La soluzione più semplice consiste nel mettere tutte le classi primarie in un singolo spazio dei nomi, rimuovendo tutte le classi di scenari avanzate in sotto-namespace; .NET Framework fa tutto questo, vedi System.Collections e System.Collections.Specialized per 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 finché il programmatore non sarà pronto a scoprirle.

    
risposta data 04.02.2011 - 09:49
fonte
3

Fintanto che appartengono insieme e si relazionano tra loro, non c'è un problema nell'avere troppe classi in un namespace.

Se una classe appartiene o meno al proprio spazio dei nomi separato è una questione di preferenze personali.

Che aspetto più naturale?

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

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

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

    
risposta data 03.02.2011 - 18:32
fonte
0

Questo va bene. La ragione 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 alcune regole ragionevoli sono benvenute. 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 ti consente di separare i tuoi algoritmi da quelli standard.

    
risposta data 04.02.2011 - 11:46
fonte

Leggi altre domande sui tag