Nomi di spazi dei nomi
Nota
Questo contenuto viene ristampato con l'autorizzazione di Pearson Education, Inc. da Framework Design Guidelines: Conventions, Idioms and Patterns for Reusable .NET Libraries, 2nd Edition. Tale edizione è stata pubblicata nel 2008 e il libro è stato completamente rivisto nella terza edizione. Alcune informazioni in questa pagina potrebbero non essere aggiornate.
Come per altre linee guida per la denominazione, l'obiettivo durante la denominazione degli spazi dei nomi consiste nel creare una chiarezza sufficiente per il programmatore che usa il framework per conoscere immediatamente il contenuto dello spazio dei nomi. Il modello seguente specifica la regola generale per la denominazione degli spazi dei nomi:
<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]
Di seguito sono riportati alcuni esempi:
Fabrikam.Math
Litware.Security
✔️ ANTEPORRE ai nomi degli spazi dei nomi il nome di un'azienda per evitare che spazi dei nomi di aziende diverse abbiano lo stesso nome.
✔️ USARE un nome prodotto stabile, indipendente dalla versione, al secondo livello di un nome dello spazio dei nomi.
❌ NON usare gerarchie organizzative come base per i nomi nelle gerarchie dello spazio dei nomi, perché i nomi dei gruppi all'interno delle società tendono a essere di breve durata. Organizzare la gerarchia degli spazi dei nomi in base ai gruppi di tecnologie correlate.
✔️ USARE PascalCasing e separare i componenti dello spazio dei nomi con punti (ad esempio, Microsoft.Office.PowerPoint
). Se il marchio usa maiuscole e minuscole non tradizionali, è necessaio seguire la combinazione di maiuscole e minuscole definite dal proprio marchio, anche se devia dalla normale combinazione di maiuscole e minuscole dello spazio dei nomi.
✔️ PRENDERE IN CONSIDERAZIONE l'uso di nomi plurali dove appropriato.
Usare, ad esempio, System.Collections
invece di System.Collection
. I nomi dei marchi e gli acronimi sono tuttavia eccezioni a questa regola. Usare, ad esempio, System.IO
invece di System.IOs
.
❌ NON usare lo stesso nome per uno spazio dei nomi e un tipo in tale spazio dei nomi.
Ad esempio, non usare Debug
come nome dello spazio dei nomi e quindi specificare anche una classe denominata Debug
nello stesso spazio dei nomi. Diversi compilatori richiedono che tali tipi siano completi.
Spazi dei nomi e conflitti di nomi di tipo
❌ NON introdurre nomi di tipo generico, ad esempio Element
, Node
, Log
e Message
.
Esiste una probabilità molto elevata che in questo modo si verifichino conflitti di nomi di tipo in scenari comuni. È necessario qualificare i nomi dei tipi generici (FormElement
, XmlNode
, EventLog
, SoapMessage
).
Esistono linee guida specifiche per evitare conflitti di nomi di tipo per diverse categorie di spazi dei nomi.
Spazi dei nomi del modello di applicazione
Gli spazi dei nomi appartenenti a un singolo modello di applicazione vengono spesso usati insieme, ma non vengono quasi mai usati con spazi dei nomi di altri modelli di applicazione. Ad esempio, lo spazio dei nomi System.Windows.Forms viene usato raramente insieme allo spazio dei nomi System.Web.UI. Di seguito è riportato un elenco di gruppi di spazi dei nomi noti del modello di applicazione:
System.Windows*
System.Web.UI*
❌ NON assegnare lo stesso nome ai tipi negli spazi dei nomi all'interno di un singolo modello di applicazione.
Ad esempio, non aggiungere un tipo denominato
Page
allo spazio dei nomi System.Web.UI.Adapters, perché lo spazio dei nomi System.Web.UI contiene già un tipo denominatoPage
.Spazi dei nomi dell'infrastruttura
Questo gruppo contiene spazi dei nomi che vengono raramente importati durante lo sviluppo di applicazioni comuni. Ad esempio, gli spazi dei nomi
.Design
vengono usati principalmente durante lo sviluppo di strumenti di programmazione. Evitare conflitti con i tipi in questi spazi dei nomi non è fondamentale.Spazi dei nomi principali
Gli spazi dei nomi principali includono tutti gli spazi dei nomi
System
, esclusi gli spazi dei nomi dei modelli dell'applicazione e gli spazi dei nomi Infrastruttura. Gli spazi dei nomi principali includono, tra gli altri,System
,System.IO
,System.Xml
eSystem.Net
.❌ NON assegnare nomi di tipi in conflitto con qualsiasi tipo negli spazi dei nomi Core.
Ad esempio, non usare mai
Stream
come nome di tipo. Sarebbe in conflitto con System.IO.Stream, un tipo usato molto comunemente.Gruppi di spazi dei nomi della tecnologia
Questa categoria include tutti gli spazi dei nomi con gli stessi primi due nodi dello spazio dei nomi
(<Company>.<Technology>*
), ad esempioMicrosoft.Build.Utilities
eMicrosoft.Build.Tasks
. È importante che i tipi appartenenti a una singola tecnologia non siano in conflitto tra loro.❌ NON assegnare nomi di tipo in conflitto con altri tipi all'interno di una singola tecnologia.
❌ NON introdurre conflitti di nomi di tipo tra i tipi negli spazi dei nomi della tecnologia e uno spazio dei nomi del modello di applicazione (a meno che la tecnologia non sia destinata a essere usata con il modello applicativo).
Parti protette da copyright © 2005, 2009 Microsoft Corporation. Tutti i diritti sono riservati.
Ristampato con l'autorizzazione di Pearson Education, Inc. da Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2a edizione di Krzysztof Cwalina and Brad Abrams, pubblicato il 22 ottobre 2008 da Addison-Wesley Professional nella collana Microsoft Windows Development Series.