Continuando con le regole di naming, vediamo oggi le linee guida per assegnare il nome a classi, interfacce e strutture.
I nomi dei tipi dovrebbero essere sempre dei predicati che definiscono l'entità rappresentata dal tipo (es. Cliente, File, Ordine, Queue...).
I nomi dei tipi devono sempre essere scritti in Pascal case e non devono includere alcun prefisso, eccetto il caso particolare delle interfacce che dovrebbero sempre iniziare con la lettera I maiuscola ( IDisposable, IComparable, IConvertible, ...).
Le classi che derivano da una classe base dovrebbero terminare con il nome di quest'ultima. Ad esempio, nel framework tutte le eccezioni terminano con Exception in quanto derivano dalla classe base Exception (ApplicationException, SystemException, ...).
Per quanto riguarda i tipi generic, utilizzare nomi descrittivi per il tipo utilizzato come parametro e utilizzare solo la lettera T nel caso in cui questa sia sufficientemente esplicativa.
àˆ opportuno utilizzare per alcuni tipi di uso comune dei suffissi appropriati:
- Attribute per tutte le classi che ereditano da Attribute
- EventHandler per i gestori di evento
- Delegate per i tipi Delegate
- EventArgs per le classi che ereditano dalla classe EventArgs
- Dictionary per i tipi che implementano l'interfaccia IDictionary
- Collection per i tipi che implementano IEnumerable, ICollection, IList e le corrispondenti interfacce generiche
- Stream per i tipi che ereditano da Stream
- Permission per i tipi che ereditano da CodeAccessPermission oppure implementano IPermission
Nel caso degli enumerati i nomi dei valori non devono contenere il nome dell'enumerato, ad esempio non è corretto:
public enum State { StateNew, StateClosed, StateDraft }
Invece è corretto:
public enum State { New, Closed, Draft }
Il nome del tipo enum non deve contenere il suffisso Enum (ad esempio State invece di StateEnum) e dovrebbe essere sempre al singolare eccetto nel caso di enum con valori di tipo Bit.