Rozšířená pravidla návrhu pokyny sadu pravidel pro spravovaný kód
Sada pravidel Microsoft rozšířená pravidla návrhu obecných zásad se rozšíří na základní návrh pravidel obecné maximalizovat použitelnosti a recyklovatelných problémy, které jsou hlášeny.Extra důraz je kladen na pojmenování pokyny.Měli byste zvážit, včetně tohoto pravidla, pokud projekt obsahuje kód knihovny nebo chcete-li zajistit nejvyšší standardy pro psaní kódu, který je snadná.
Pravidla návrhu obecných zásad Extended zahrnují všechna pravidla obecné základní návrhu.Základní pravidla návrhu obecných zásad zahrnout všechny Microsoft Minimální doporučená pravidla.Další informace naleznete v tématu Základní návrh pravidel obecné pravidlo pro spravovaný kód a Spravované doporučená pravidla sadu pravidel pro spravovaný kód.
Následující tabulka popisuje všechna pravidla v sadě Microsoft rozšířená pravidla návrhu obecné pravidlo.
Pravidlo |
Description |
---|---|
Typy, které vlastní jednorázových polí by mělo být na jedno použití |
|
Správně deklarovat obslužné rutiny událostí |
|
Značka sestav s AssemblyVersionAttribute |
|
Metody rozhraní by měla být volána skriptem podřízené typy |
|
Typy vlastních nativní zdrojů by měly být na jedno použití |
|
Přesunout do třídy NativeMethods P/Invokes |
|
Nelze skrýt metody základní třídy. |
|
Správně implementovat IDisposable |
|
Nevyvolávají výjimky v neočekávané umístění |
|
Vyhnout se duplicitní akcelerátory |
|
Vstupní body P/Invoke by existovat. |
|
P/Invokes nemusí být viditelné |
|
Typy automatického rozložení nesmí být viditelné COM |
|
Volání funkce GetLastError ihned po vyvolání/P |
|
Základní typy viditelný typ COM musí být viditelné COM |
|
Najít odpovídající registraci metod modelu COM |
|
Správně deklarovat P/Invokes |
|
Odstranit prázdné finalizačních metod |
|
Pole typu hodnota by měla být přenosný |
|
P/Invoke prohlášení by mělo být přenosný |
|
Zamknout na objekty s identitou slabé |
|
Zkontrolujte chyby zabezpečení dotazy SQL |
|
Určit zařazování pro řetězcové argumenty P/Invoke. |
|
Přezkoumání deklarativní zabezpečení na hodnotu typy |
|
Ukazatele nemusí být viditelné |
|
Nesmí vystavovat zabezpečené typy polí |
|
Metoda zabezpečení by měl být nadmnožinou typu |
|
Metody APTCA by pouze volání metod APTCA |
|
Typy APTCA by měl rozšířit pouze základní typy APTCA |
|
Nepřímo neuvádějí metody s požadavky propojení |
|
Přepsat spojení, které by měly být shodné základní požadavky |
|
Obtékání ohrožen nakonec klauzulí ve vnější akci |
|
Typ propojení požadavků vyžadují dědičnost poptávek |
|
Důležité typy zabezpečení není součástí typu rovnocennost |
|
Musí být výchozí konstruktory důležité jako základní typ výchozí konstruktory |
|
Delegáti musí navázat na metody s konzistentní průhlednost |
|
Metody musí zachovat konzistentní průhlednost při přepsání základní metody |
|
Transparentní metody musí obsahovat pouze ověřitelné IL |
|
Transparentní metody musí nelze volat metody s atributem SuppressUnmanagedCodeSecurity |
|
Průhledné kód musí odkazovat není zabezpečení důležité položky |
|
Transparentní metody musí splňovat není LinkDemands |
|
Typy musí být důležité jako rozhraní a základní typy |
|
Transparentní metody nelze použít zabezpečení nepodmíněných výrazů |
|
Transparentní metody musí není volání do nativního kódu |
|
Rethrow zachovat podrobnosti zásobníku |
|
Neodstraňovat několikrát objekty |
|
Inicializace vložené statické pole typu hodnota |
|
Neoznačovat servisu komponenty s WebMethod |
|
Na jedno použití polí by vyřazen. |
|
Nevolejte overridable metody konstruktory |
|
Typy jednorázových by měla deklarovat finalizačních metod |
|
Základní třída finalizačních metod by měla zavolat finalizačních metod |
|
Implementovat serializace konstruktory |
|
Přetížení operátor rovná se na přepsání ValueType.Equals |
|
Značka model Windows Forms vstupní body s STAThread |
|
Označit všechna pole není serializovatelný. |
|
Typy ISerializable volat metody základní třídy. |
|
Typy ISerializable značka s SerializableAttribute |
|
Správně implementovat metody serializace |
|
Správně implementovat ISerializable |
|
Poskytovat správné argumenty metody formátování |
|
Test správně NaN |
|
V obecných typech prohlásí statické členy |
|
Neuvádějí obecný seznam |
|
Použít událost obecný popisovač instance |
|
Obecné metody by měl poskytnout parametr typu |
|
Vyhnout se nadměrnému parametry na obecné typy |
|
Nelze vnořit obecné typy v podpisech členské |
|
Případně pomocí generics |
|
Výčty musí mít nulovou hodnotu |
|
Kolekce musí implementovat rozhraní obecný |
|
Zvažte předávání základních typů jako parametry |
|
Abstraktní typy by neměl mít konstruktory |
|
Rovná se operátor přetížení na přetížení sečíst a odečíst |
|
Značka sestav s CLSCompliantAttribute |
|
Značka sestav s ComVisibleAttribute |
|
Atributy značky s AttributeUsageAttribute |
|
Definování přístupové objekty pro argumenty atributu |
|
Indexování by neměl být multidimenzionální |
|
V případě potřeby použít vlastnosti |
|
Opakované argumenty nahradit params matice |
|
By neměl být použit výchozí parametry |
|
Označit výčty s FlagsAttribute |
|
Výčet úložiště by mělo být Int32 |
|
Případně pomocí událostí |
|
Nemusí zachytit výjimku obecné typy |
|
Implementace standardní výjimku konstruktory |
|
Typy vnořených nemusí být viditelné |
|
Implementace rozhraní ICollection mají silný členů |
|
Přepsat metody srovnatelných typů |
|
Čítače výčtů by měla být silný |
|
Silný seznamy |
|
Poskytnout zprávu ObsoleteAttribute |
|
Pomocí integrálního nebo řetězec argumentu pro indexování |
|
Vlastnosti nelze zapisovat pouze |
|
Přetěžování není operátor rovná se na typy odkazů |
|
Chráněné členy v uzavřených typů prohlásí. |
|
Virtuální členy v uzavřených typů prohlásí. |
|
Deklarovat typy v oborech názvů |
|
Pole viditelné instancí prohlásí. |
|
Držitel statické typy by měly být zapečetěny. |
|
Držitel statické typy by neměl mít konstruktory |
|
Parametry URI by neměl být řetězce |
|
Identifikátor URI vrátit hodnoty by neměl být řetězce |
|
Vlastnosti identifikátoru URI by neměl být řetězce |
|
Řetězec identifikátoru URI přetížení volat přetížení System.Uri |
|
Typy by nemělo být rozšířeno určité základní typy |
|
Členové nesmí vystavovat určité typy betonu |
|
Výjimky by měly být veřejné |
|
Názvy proměnných by názvy polí neodpovídají |
|
Vyhnout se nadměrnému složitost |
|
Identifikátory měly lišit o více než případu |
|
Identifikátory by neodpovídají klíčová slova |
|
Kontrolovat nepoužité parametry |
|
Odebrání nepoužívaných locals |
|
Vyhnout se nadměrnému locals |
|
Inicializace vložené statické pole Typ odkazu |
|
Zamezení zúčtován soukromé kód |
|
Vyhnout se bez instancí třídy interní |
|
Zamezení neuzavřených atributy |
|
Raději Vícenásobná pole nad multidimenzionální |
|
Rovná se přepsat a operátor rovná se hodnota typů |
|
Vlastnosti by měly nevrací matice |
|
Test prázdné řetězce pomocí délka řetězce |
|
Členové označit jako statický |
|
Vyhnout se nepoužité pole private |
|
Nevyvolávají výjimku vyhrazené typy |
|
Použití spravovaných ekvivalenty rozhraní Win32 API |
|
Vytvoření instance výjimky argument správně |
|
Konstanta není pole nemusí být viditelné |
|
Neoznačovat výčty s FlagsAttribute |
|
Nevyvolávají výjimky v klauzulích výjimky |
|
Finalizačních metod by měly být chráněny. |
|
Viditelnost zděděný člen poklesu. |
|
Členové by se lišit o více než návratový typ |
|
Rovná se přepsat na přetížení operátor rovná se |
|
Operátor přetížení jsou pojmenovány alternativy |
|
Operátory by měly mít symetricky přetížení |
|
Vlastnosti kolekce by pouze čtení |
|
Použijte parametry pro proměnné argumenty |
|
Průchod System.Uri objekty namísto řetězce |
|
Poskytovat rekonstrukci metody pro volitelné pole |
|
Vyhnout se obory s několika typy |
|
Vyhnout se výstupní parametry |
|
Vyhnout se prázdné rozhraní |
|
Typy neprojde odkazem |
|
Argumenty veřejné metody ověření |
|
Vyhnout se nadměrnému dědičnosti |
|
Zkontrolujte zavádějící názvy polí |
|
Vyhnout se unmaintainable kód |
|
Vyhnout se nadměrnému třídy spojovacího zařízení |
|
Název hodnoty výčtu není při "Vyhrazené" |
|
Uváděna velkými složená slova řetězec zdroje by měly být písmeny správně |
|
Uváděna velkými složená slova by měla být písmeny správně |
|
Zdrojové řetězce by zadán správně |
|
Identifikátory by měla být zadána správně |
|
Identifikátory nesmí obsahovat podtržítka |
|
Uváděna velkými identifikátory by měla být písmeny správně |
|
Identifikátory má správnou příponu. |
|
Identifikátory by neměl mít Nesprávná přípona |
|
Předpona není hodnoty výčtu s názvem typu |
|
Události by neměla před nebo po předpona |
|
Výčty příznaky by měly mít názvy v množném čísle. |
|
Identifikátory by měl mít správný prefix |
|
Pouze FlagsAttribute výčty by měly mít názvy v množném čísle |
|
Názvy parametrů by neodpovídají názvy členů |
|
Identifikátory nesmí obsahovat názvy typu |
|
Názvy vlastností by měl odpovídat není metody get |
|
Identifikátory by neměl mít nesprávnou předponu |
|
Zadejte jména by neodpovídají obory názvů |
|
Názvy parametrů by měly odpovídat základní prohlášení |
|
Použít upřednostňované podmínky |
|
Literály by měla být zadána správně |