Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Annotazioni
Questo contenuto viene ristampato con il permesso di Pearson Education, Inc. da Framework Design Guidelines: Conventions, Idioms e Pattern per Librerie .NET Riutilizzabili, 2a Edizione. Tale edizione è stata pubblicata nel 2008 e il libro è stato completamente rivisto nella terza edizione. Alcune informazioni in questa pagina potrebbero non essere aggiornate.
Le linee guida per la denominazione che seguono si applicano alla denominazione generale dei tipi.
✔️ Fai in modo che le classi e le strutture siano nominate con nomi o frasi nominali, usando il PascalCasing.
Questo distingue i nomi dei tipi dai metodi, denominati con frasi verbo.
✔️ Dai un nome alle interfacce usando frasi aggettivali o, occasionalmente, nomi o frasi nominali.
I sostantivi e le frasi sostantive devono essere usati raramente e potrebbero indicare che il tipo deve essere una classe astratta e non un'interfaccia.
❌ NON assegnare nomi di classe a un prefisso (ad esempio, "C").
✔️ PRENDERE IN CONSIDERAZIONE di terminare il nome delle classi derivate con il nome della classe di base.
Questo è molto leggibile e spiega chiaramente la relazione. Alcuni esempi di questo in codice sono: ArgumentOutOfRangeException
, che è un tipo di Exception
, e SerializableAttribute
, che è un tipo di Attribute
. Tuttavia, è importante usare un giudizio ragionevole nell'applicazione di questa linea guida; Ad esempio, la Button
classe è un tipo di Control
evento, anche se Control
non viene visualizzato nel nome.
✔️ Prefissare i nomi delle interfacce con la lettera I, per indicare che il tipo di dato è un'interfaccia.
Ad esempio, IComponent
(sostantivo descrittivo), ICustomAttributeProvider
(frase sostantiva) e IPersistable
(aggettivo) sono nomi di interfaccia appropriati. Come con altri nomi di tipo, evitare abbreviazioni.
✔️ ASSICURARSI che i nomi differiscano solo dal prefisso "I" sul nome dell'interfaccia quando si definisce una coppia di interfacce di classe in cui la classe è un'implementazione standard dell'interfaccia.
Nomi dei parametri di tipo generico
I generics sono stati aggiunti a .NET Framework 2.0. La funzionalità ha introdotto un nuovo tipo di identificatore denominato parametro di tipo.
✔️ Dare ai parametri di tipo generico nomi descrittivi, a meno che un nome di una sola lettera non sia completamente autoesplicativo e un nome descrittivo non aggiunga valore.
✔️ PRENDERE IN CONSIDERAZIONE l'uso T
come nome del parametro di tipo per i tipi con un solo parametro di tipo lettera singola.
public int IComparer<T> { ... }
public delegate bool Predicate<T>(T item);
public struct Nullable<T> where T:struct { ... }
✔️ Nomi dei parametri di tipo descrittivo del prefisso DO con T
.
public interface ISessionChannel<TSession> where TSession : ISession {
TSession Session { get; }
}
✔️ CONSIDERARE di indicare i vincoli nel nome di un parametro di tipo.
Ad esempio, un parametro vincolato a ISession
potrebbe essere chiamato TSession
.
Nomi di tipi comuni
✔️ Seguire le linee guida descritte nella tabella seguente per la denominazione dei tipi derivati da o l'implementazione di determinati tipi .NET Framework.
Tipo di base | Linee guida per i tipi derivati/tipi di implementazione |
---|---|
System.Attribute |
✔️ DO aggiungere il suffisso "Attribute" ai nomi delle classi di attributi personalizzate. |
System.Delegate |
✔️ DO aggiungere il suffisso "EventHandler" ai nomi dei delegati usati negli eventi. ✔️ DO aggiungere il suffisso "Callback" ai nomi dei delegati diversi da quelli usati come gestori eventi. ❌ NON aggiungere il suffisso "Delegato" a un delegato. |
System.EventArgs |
✔️ DO aggiungere il suffisso "EventArgs". |
System.Enum |
❌ NON derivare da questa classe; usare invece la parola chiave supportata dal tuo linguaggio; ad esempio, in C#, usare la parola chiave enum .❌ NON aggiungere il suffisso "Enum" o "Flag". |
System.Exception |
✔️ DO aggiungere il suffisso "Eccezione". |
IDictionary IDictionary<TKey,TValue> |
✔️ DO aggiungere il suffisso "Dictionary". Si noti che IDictionary è un tipo specifico di raccolta, ma questa linea guida ha la precedenza sulle linee guida più generali sulle raccolte che seguono. |
IEnumerable ICollection IList IEnumerable<T> ICollection<T> IList<T> |
✔️ DO aggiungere il suffisso "Collection". |
System.IO.Stream |
✔️ Assicurarsi di aggiungere il suffisso "Stream". |
CodeAccessPermission IPermission |
✔️ DO aggiungere il suffisso "Permesso". |
Denominazione delle Enumerazioni
I nomi dei tipi di enumerazione (chiamati anche enumerazioni) in generale devono seguire le regole di denominazione dei tipi standard (PascalCasing e così via). Esistono tuttavia linee guida aggiuntive che si applicano in modo specifico alle enumerazioni.
✔️ USARE un nome di tipo singolare per un'enumerazione, a meno che i relativi valori non siano campi di bit.
✔️ DO Usa un nome di tipo plurale per un'enumerazione con campi di bit come valori, detto anche flag enum.
❌ NON usare un suffisso "Enum" nei nomi dei tipi enum.
❌ NON usare i suffissi "Flag" o "Flags" nei nomi dei tipi di enumerazione.
❌ NON utilizzare un prefisso nei nomi dei valori enumerati (ad esempio, "ad" per le enumerazioni ADO, "rtf" per le enumerazioni di testo formattato, ecc.).
© Porzioni 2005, 2009 Microsoft Corporation. Tutti i diritti riservati.
Ristampato dall'autorizzazione di Pearson Education, Inc. da Framework Design Guidelines: Conventions, Idioms e Patterns for Reusable .NET Libraries, 2nd Edition di Krzysztof Cwalina e Brad Abrams, pubblicato il 22 ottobre 2008 da Addison-Wesley Professional come parte della Serie di sviluppo di Microsoft Windows.