Share via


Namn på klasser, structs och gränssnitt

Kommentar

Det här innehållet skrivs om med behörighet från Pearson Education, Inc. från Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition. Den utgåvan publicerades 2008, och boken har sedan dess reviderats helt i den tredje utgåvan. En del av informationen på den här sidan kan vara inaktuell.

Namngivningsriktlinjerna som följer gäller för namngivning av allmän typ.

✔️ DO-namnklasser och structs med substantiv eller substantivfraser, med hjälp av PascalCasing.

Detta skiljer typnamn från metoder som namnges med verbfraser.

✔️ DO-namngränssnitt med adjektivfraser, eller ibland med substantiv eller substantivfraser.

Substantiv och substantivfraser bör användas sällan och de kan tyda på att typen ska vara en abstrakt klass och inte ett gränssnitt.

❌ Ge INTE klassnamn ett prefix (t.ex. "C").

✔️ ÖVERVÄG att avsluta namnet på härledda klasser med namnet på basklassen.

Detta är mycket läsbart och förklarar relationen tydligt. Några exempel på detta i kod är: ArgumentOutOfRangeException, som är en typ av Exception, och SerializableAttribute, som är en typ av Attribute. Det är dock viktigt att använda rimlig bedömning vid tillämpningen av denna riktlinje. Klassen är till exempel Button en typ av Control händelse, men Control visas inte i dess namn.

✔️ GÖR prefixgränssnittsnamn med bokstaven I för att ange att typen är ett gränssnitt.

Till exempel IComponent (beskrivande substantiv), ICustomAttributeProvider (substantivfras) och IPersistable (adjektiv) är lämpliga gränssnittsnamn. Precis som med andra typnamn bör du undvika förkortningar.

✔️ Se till att namnen endast skiljer sig åt med prefixet "I" på gränssnittsnamnet när du definierar ett class-interface-par där klassen är en standardimplementering av gränssnittet.

Namn på generiska typparametrar

Generiska läkemedel har lagts till i .NET Framework 2.0. Funktionen introducerade en ny typ av identifierare som kallas typparameter.

✔️ NAMNGE generiska typparametrar med beskrivande namn såvida inte ett namn med en bokstav är helt självförklarande och ett beskrivande namn inte skulle lägga till värde.

✔️ ÖVERVÄG att använda T som typparameternamn för typer med en parameter av typen enkel bokstav.

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

✔️ DO prefix descriptive type parameter name with T.

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

✔️ ÖVERVÄG att ange begränsningar för en typparameter i parameterns namn.

En parameter som är begränsad till kan till ISession exempel kallas TSession.

Namn på vanliga typer

✔️ Följ riktlinjerna som beskrivs i följande tabell när du namnger typer som härletts från eller implementerar vissa .NET Framework-typer.

Bastyp Riktlinje för härledd/implementeringstyp
System.Attribute ✔️ Lägg till suffixet "Attribute" i namnen på anpassade attributklasser.
System.Delegate ✔️ Lägg till suffixet "EventHandler" i namnen på de ombud som används i händelser.

✔️ Lägg till suffixet "Motringning" i namn på andra ombud än de som används som händelsehanterare.

❌ Lägg INTE till suffixet "Delegate" i ett ombud.
System.EventArgs ✔️ Lägg till suffixet "EventArgs".
System.Enum ❌ HÄRLED INTE från den här klassen; använd nyckelordet som stöds av ditt språk i stället. Använd till exempel nyckelordet enum i C#.

❌ Lägg INTE till suffixet "Enum" eller "Flagga".
System.Exception ✔️ Lägg till suffixet "Exception".
IDictionary
IDictionary<TKey,TValue>
✔️ Lägg till suffixet "Dictionary". Observera att det IDictionary är en specifik typ av samling, men den här riktlinjen har företräde framför de mer allmänna samlingar som följer.
IEnumerable
ICollection
IList
IEnumerable<T>
ICollection<T>
IList<T>
✔️ Lägg till suffixet "Samling".
System.IO.Stream ✔️ Lägg till suffixet "Stream".
CodeAccessPermission IPermission ✔️ Lägg till suffixet "Behörighet".

Namngivning av uppräkningar

Namn på uppräkningstyper (kallas även uppräkningar) i allmänhet bör följa standardreglerna för namngivning av typ (PascalCasing osv.). Det finns dock ytterligare riktlinjer som gäller specifikt för uppräkningar.

✔️ Använd ett namn av singulartyp för en uppräkning såvida inte dess värden är bitfält.

✔️ Använd ett pluraltypnamn för en uppräkning med bitfält som värden, även kallat flaggor uppräkning.

❌ Använd INTE suffixet "Enum" i namn på uppräkningstyp.

❌ Använd INTE suffixen "Flagga" eller "Flaggor" i namn på uppräkningstyper.

❌ Använd INTE ett prefix på uppräkningsvärdenamn (t.ex. "ad" för ADO-uppräkningar, "rtf" för rtf-uppräkningar osv.).

Portioner © 2005, 2009 Microsoft Corporation. Med ensamrätt.

Reprinted by permission of Pearson Education, Inc. from Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition by Krzysztof Cwalina and Brad Abrams, publicerad 22 okt 2008 av Addison-Wesley Professional som en del av Microsoft Windows Development Series.

Se även