Share via


Namen van klassen, structs en interfaces

Notitie

Deze inhoud wordt opnieuw afgedrukt door toestemming van Pearson Education, Inc. van Framework Design Guidelines: Conventions, Idioms en Patterns for Reusable .NET Libraries, 2nd Edition. Die editie werd in 2008 gepubliceerd en het boek is sindsdien volledig herzien in de derde editie. Sommige informatie op deze pagina is mogelijk verouderd.

De richtlijnen voor naamgeving die volgen, zijn van toepassing op algemene typenaamgeving.

✔️ DO-naamklassen en structs met zelfstandige naamwoorden of zelfstandige naamwoordzinnen, met behulp van PascalCasing.

Hiermee worden typenamen onderscheiden van methoden, die worden genoemd met werkwoordzinnen.

✔️ DO-naaminterfaces met bijvoeglijke naamwoordzinnen, of af en toe met zelfstandige naamwoordzinnen of zelfstandige naamwoordzinnen.

Zelfstandige naamwoorden en zelfstandige naamwoordzinnen moeten zelden worden gebruikt en ze geven mogelijk aan dat het type een abstracte klasse moet zijn en geen interface.

❌ Geef geen klassenamen een voorvoegsel (bijvoorbeeld 'C').

✔️ OVERWEEG de naam van afgeleide klassen te beëindigen met de naam van de basisklasse.

Dit is zeer leesbaar en legt de relatie duidelijk uit. Enkele voorbeelden hiervan in code zijn: ArgumentOutOfRangeException, wat een soort Exceptionis en SerializableAttribute, wat een soort Attributeis . Het is echter belangrijk een redelijk oordeel te gebruiken bij het toepassen van deze richtlijn; De Button klasse is bijvoorbeeld een soort Control gebeurtenis, hoewel Control deze niet in de naam wordt weergegeven.

✔️ DO-voorvoegselinterfacenamen met de letter I, om aan te geven dat het type een interface is.

(beschrijvend zelfstandig naamwoord), ICustomAttributeProvider (zelfstandig naamwoord) en IPersistable (bijvoeglijk naamwoord) zijn bijvoorbeeld IComponent de juiste interfacenamen. Net als bij andere typenamen vermijdt u afkortingen.

✔️ Zorg ervoor dat de namen alleen verschillen met het voorvoegsel 'I' op de interfacenaam wanneer u een klasse-interfacepaar definieert waarbij de klasse een standaard-implementatie van de interface is.

Namen van algemene typeparameters

Generics zijn toegevoegd aan .NET Framework 2.0. De functie heeft een nieuw type id geïntroduceerd met de naam parameter van het type.

✔️ Do naam algemene type parameters met beschrijvende namen tenzij een naam met één letter volledig verklarend is en een beschrijvende naam geen waarde zou toevoegen.

✔️ OVERWEEG het gebruik T als de parameternaam van het type voor typen met één lettertypeparameter.

public int IComparer<T> { ... }
public delegate bool Predicate<T>(T item);
public struct Nullable<T> where T:struct { ... }

✔️ Do voorvoegsel beschrijvende type parameternamen met T.

public interface ISessionChannel<TSession> where TSession : ISession {
    TSession Session { get; }
}

✔️ OVERWEEG om beperkingen aan te geven die zijn geplaatst voor een typeparameter in de naam van de parameter.

Een parameter die is beperkt, ISession kan bijvoorbeeld worden aangeroepen TSession.

Namen van algemene typen

✔️ Volg de richtlijnen die in de volgende tabel worden beschreven bij het benoemen van typen die zijn afgeleid van of het implementeren van bepaalde .NET Framework-typen.

Basistype Afgeleide/implementatietyperichtlijn
System.Attribute ✔️ Voeg het achtervoegsel 'Kenmerk' toe aan de namen van aangepaste kenmerkklassen.
System.Delegate ✔️ Voeg het achtervoegsel EventHandler toe aan namen van gemachtigden die worden gebruikt in gebeurtenissen.

✔️ Voeg het achtervoegsel Callback toe aan namen van andere gemachtigden dan gemachtigden die worden gebruikt als gebeurtenis-handlers.

❌ Voeg het achtervoegsel 'Gedelegeerde' NIET toe aan een gemachtigde.
System.EventArgs ✔️ Voeg het achtervoegsel EventArgs toe.
System.Enum ❌ NIET afleiden van deze klasse; gebruik in plaats daarvan het trefwoord dat door uw taal wordt ondersteund; Gebruik bijvoorbeeld in C# het enum trefwoord.

❌ Voeg het achtervoegsel 'Enum' of 'Vlag' NIET toe.
System.Exception ✔️ Voeg het achtervoegsel 'Uitzondering' toe.
IDictionary
IDictionary<TKey,TValue>
✔️ Voeg het achtervoegsel 'Woordenlijst' toe. Houd er rekening mee dat dit IDictionary een specifiek type verzameling is, maar deze richtlijn heeft voorrang op de meer algemene richtlijn voor verzamelingen die volgt.
IEnumerable
ICollection
IList
IEnumerable<T>
ICollection<T>
IList<T>
✔️ Voeg het achtervoegsel 'Verzameling' toe.
System.IO.Stream ✔️ Voeg het achtervoegsel 'Stream' toe.
CodeAccessPermission IPermission ✔️ Voeg het achtervoegsel 'Machtiging' toe.

Opsommingen benoemen

Namen van opsommingstypen (ook wel opsommingen genoemd) moeten in het algemeen voldoen aan de standaardregels voor typenamen (PascalCasing, enzovoort). Er zijn echter aanvullende richtlijnen die specifiek van toepassing zijn op opsommingen.

✔️ Gebruik een enkelvoudige typenaam voor een opsomming, tenzij de waarden bitvelden zijn.

✔️ Gebruik een meervoudstypenaam voor een opsomming met bitvelden als waarden, ook wel vlagmarkeringen genoemd.

❌ GEBRUIK GEEN enum-achtervoegsel in opsommingstypenamen.

❌ Gebruik geen achtervoegsels 'Vlag' of 'Vlaggen' in opsommingstypenamen.

❌ GEBRUIK GEEN voorvoegsel voor opsommingswaardenamen (bijvoorbeeld 'ad' voor ADO-opsommingen, rtf voor opsommingen met opmaak, enzovoort).

© Delen 2005, 2009 Microsoft Corporation. Alle rechten voorbehouden.

Herdrukt door toestemming van Pearson Education, Inc. van Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition by Krzysztof Cwalina and Brad Abrams, published oct 22, 2008 by Addison-Wesley Professional als onderdeel van de Microsoft Windows Development Series.

Zie ook