Osztályok, szerkezetek és felületek neve
Feljegyzés
Ezt a tartalmat a Pearson Education, Inc. engedélyével nyomtatjuk újra a Framework Design Guidelines: Conventions, Idioms és Patterns for Reusable .NET Libraries, 2nd Edition engedélyével. 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.
✔️ DO névosztályok és szerkezetek 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.
✔️ DO előtag illesztőnevek az I betűvel, amely azt jelzi, hogy 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.
✔️ NE győződjön meg arról, hogy a nevek csak az "I" előtaggal térnek el az illesztőnéven, amikor osztály–interfész párot definiál, ahol az osztály az interfész szabványos implementációja.
Általános típusú paraméterek nevei
A 2.0-s .NET-keretrendszer generikusok lettek hozzáadva. A szolgáltatás bevezetett egy új típusú azonosítót, a típusparamétert.
✔️ Do name generic type parameters with descriptive names, kivéve, ha egy egybetűs név teljesen magától értetődő, és egy leíró név nem ad értéket.
✔️ FONTOLJA meg, hogy egy egybetűs típusparaméterrel rendelkező típusok típusparaméterének neveként használja T
.
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.
Előfordulhat például, hogy egy paraméter meghívása ISession
TSession
korlátozott.
Gyakori típusok nevei
✔️ A DO kövesse az alábbi táblázatban leírt irányelveket, amikor bizonyos .NET-keretrendszer tí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. ✔️ A DO adja hozzá a "Visszahívás" utótagot az eseménykezelőkhöz nem használt meghatalmazottak nevéhez. ❌ NE adja hozzá a "Delegált" utótagot a meghatalmazotthoz. |
System.EventArgs |
✔️ DO adja hozzá 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 |
✔️ DO adja hozzá a "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 |
✔️ DO adja hozzá az "Engedély" utótagot. |
Enumerálások elnevezése
Az enumerálási típusok (más néven enumerálás) neveinek általában a szokásos típuselnevezési szabályokat kell követnie (PascalCasing stb.). Vannak azonban további irányelvek, amelyek kifejezetten az enumerálásra vonatkoznak.
✔️ A DO az enumeráláshoz használjon egyedi típusnevet, kivéve, ha az értékei 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álási értéknevekhez (például "ad" az ADO-számokat, az "rtf" rich text enumerálásokat stb.).
© Részletek 2005, 2009 Microsoft Corporation. Minden jog fenntartva.
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, published 22, 2008 by Addison-Wesley Professional, a Microsoft Windows Development Series részeként.