Megosztás a következőn keresztül:


Osztályok, szerkezetek és felületek neve

Megjegyzés:

Ezt a tartalmat a Pearson Education, Inc. engedélyével nyomtatjuk újra a Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition című műből. Ezt a kiadást 2008-ban adták ki, és a könyvet azóta teljesen átdolgozták a harmadik kiadásban. Előfordulhat, hogy az oldalon található információk némelyike elavult.

Az általános típuselnevezésre az alábbi elnevezési irányelvek vonatkoznak.

✔️ Nevezd el az osztályokat és struktúrákat főnevekkel vagy főnévi kifejezésekkel a PascalCasing használatával.

Ez megkülönbözteti a típusneveket a metódusoktól, amelyek igekifejezésekkel vannak elnevezve.

✔️ DO névkapcsolatok melléknevekkel, vagy esetenként főnévvel vagy főnévvel.

A főneveket és főnévi kifejezéseket ritkán kell használni, és ezek azt jelezhetik, hogy a típusnak absztrakt osztálynak kell lennie, nem pedig interfésznek.

❌ NE adjon előtagot az osztályneveknek (pl. "C").

✔️ VEGYE FIGYELEMBE, hogy a származtatott osztályok neve az alaposztály nevével végződik.

Ez nagyon olvasható, és világosan elmagyarázza a kapcsolatot. Néhány példa erre a kódban: ArgumentOutOfRangeException, ami egyfajta Exception, és SerializableAttribute, ami egyfajta Attribute. Fontos azonban, hogy ésszerű ítéletet alkalmazzunk ennek az iránymutatásnak az alkalmazása során; Például az Button osztály egyfajta Control esemény, bár Control nem jelenik meg a nevében.

✔️ Prefixeld az interfészneveket az "I" betűvel, hogy jelezd, a típus egy interfész.

Például a IComponent (leíró főnév), ICustomAttributeProvider a (főnévi kifejezés) és IPersistable a (melléknév) megfelelő felületnevek. A többi típusnévhez hasonlóan kerülje a rövidítéseket.

✔️ Győződjön meg arról, hogy a nevek csak az "I" előtagban különböznek az interfésznévtől, amikor egy osztály–interfész párt definiál, ahol az osztály az interfész szabványos implementációja.

Általános típusú paraméterek nevei

A .NET-keretrendszer 2.0-s verziója általános fájlokkal bővült. A szolgáltatás bevezetett egy új típusú azonosítót, a típusparamétert.

✔️ Nevezze el az általános típusparamétereket leíró nevekkel, kivéve, ha egy egybetűs név teljesen magától értetődő, és a leíró név nem adna további értéket.

✔️ Fontolja meg a T használatát az egybetűs típusparaméterrel rendelkező típusok esetében a típusparaméter neveként.

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

✔️ DO előtag leíró típusú paraméternevek a következővel T: .

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

✔️ VEGYE FIGYELEMBE a paraméter nevében egy típusparaméterre vonatkozó korlátozásokat.

Például egy olyan paraméter, amely ISession-re van korlátozva, elnevezhető TSession-nek.

Gyakori típusok nevei

✔️ A DO kövesse az alábbi táblázatban leírt irányelveket, amikor bizonyos .NET-keretrendszertípusokból származó vagy implementált elnevezési típusokat használ.

Alaptípus Származtatott/implementálási típus – útmutató
System.Attribute ✔️ A DO adja hozzá az "Attribútum" utótagot az egyéni attribútumosztályok nevéhez.
System.Delegate ✔️ A DO adja hozzá az "EventHandler" utótagot az eseményekben használt meghatalmazottak nevéhez.

✔️ Feltétlenül adja hozzá a "Visszahívás" utótagot azokhoz a meghatalmazottakhoz, amelyeket nem eseménykezelőként használnak.

❌ NE adja hozzá a "Delegált" utótagot a meghatalmazotthoz.
System.EventArgs ✔️ Tegye az "EventArgs" utótagot.
System.Enum ❌ NE származtasd ebből az osztályból; használja inkább a nyelv által támogatott kulcsszót; Például a C#-ban használja a kulcsszót enum .

❌ NE adja hozzá az "Enum" vagy a "Flag" utótagot.
System.Exception ✔️ MINDENKÉPP adjunk hozzá az "Exception" utótagot.
IDictionary
IDictionary<TKey,TValue>
✔️ DO adja hozzá a "Szótár" utótagot. Vegye figyelembe, hogy IDictionary ez egy adott gyűjteménytípus, de ez az útmutató elsőbbséget élvez az alábbi általánosabb gyűjtemények iránymutatásával szemben.
IEnumerable
ICollection
IList
IEnumerable<T>
ICollection<T>
IList<T>
✔️ ADJA hozzá a "Gyűjtemény" utótagot.
System.IO.Stream ✔️ DO adja hozzá a „Stream” utótagot.
CodeAccessPermission IPermission ✔️ A "Engedély" utótagot hozzá kell adni.

Enumerálások elnevezése

Az enumerálási típusok (más néven enumok) neveinek általában a szokásos típuselnevezési szabályokat kell követniük (PascalCasing stb.). Vannak azonban további irányelvek, amelyek kifejezetten az enumerálásra vonatkoznak.

✔️ Az enumerálás esetén használjon egyes típusnevet, kivéve, ha az értékek bitmezők.

✔️ A DO függvény többes számú típusnevet használ a bitmezőket értékként tartalmazó enumeráláshoz, más néven jelzők számbavételéhez.

❌ NE használjon "Enum" utótagot számtípusnevekben.

❌ NE használja a "Flag" vagy a "Flags" utótagokat számtípusnevekben.

❌ NE használjon előtagot az enumerált értéknevekhez (például "ad" az ADO-enumokhoz, "rtf" a rich text enumokhoz stb.).

© Részletek 2005, 2009 Microsoft Corporation. Minden jog fenntartva.

Újranyomva a Pearson Education, Inc. engedélyével, Krzysztof Cwalina és Brad Abrams Framework Design Guidelines: Konvenciók, Idiomák és Minták az Újrafelhasználható .NET Könyvtárak Számára, 2. kiadás című könyvéből, közzétéve 2008. október 22-én, a Addison-Wesley Professional által, a Microsoft Windows Fejlesztési Sorozat részeként.

Lásd még