Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Tento obsah je znovu vytištěn oprávněním Pearson Education, Inc. z Framework Design Guidelines: Conventions, Idioms a Patterns for Reusable .NET Libraries, 2. vydání. Tato edice byla publikována v roce 2008 a kniha byla od té doby plně upravena ve třetím vydání. Některé informace na této stránce můžou být zastaralé.
Výčty jsou speciálním druhem typu hodnoty. Existují dva druhy výčtů: jednoduché výčty a výčty s příznaky.
Jednoduché výčty představují malé uzavřené sady voleb. Běžným příkladem jednoduchého výčtu je sada barev.
Příznakové výčty jsou navržené tak, aby podporovaly bitové operace s hodnotami výčtu. Běžným příkladem výčtu příznaků je seznam možností.
✔️ Používejte výčet k silnému typování parametrů, vlastností a návratových hodnot, které představují sady hodnot.
✔️ Upřednostnění použití výčtu místo statických konstant.
❌ NEPOUŽÍVEJTE výčt pro otevřené sady (například verzi operačního systému, názvy přátel atd.).
❌ NEPOSKYTUJTE rezervované výčtové hodnoty, které jsou určeny pro budoucí použití.
Vždy můžete jednoduše přidat hodnoty do existujícího výčtu v pozdější fázi. Další podrobnosti o přidávání hodnot do výčtů najdete v tématu Přidání hodnot do výčtů . Rezervované hodnoty pouze znečišťují sadu skutečných hodnot a mají tendenci vést k chybám uživatelů.
❌ Vyhněte se veřejnému zveřejnění výčtů pouze s jednou hodnotou.
Běžným postupem pro zajištění budoucí rozšiřitelnosti rozhraní API pro C je přidání vyhrazených parametrů do podpisů metod. Takové rezervované parametry lze vyjádřit jako výčty s jednou výchozí hodnotou. To by se nemělo provádět ve spravovaných rozhraních API. Přetížení metody umožňuje přidávání parametrů v budoucích verzích.
❌ DO VÝčtů nezahrnujte hodnoty sentinelu.
I když jsou někdy užitečné pro vývojáře architektury, hodnoty sentinelu jsou pro uživatele architektury matoucí. Používají se ke sledování stavu výčtu, a nikoli k tomu, aby byly jednou z hodnot ze sady reprezentované výčtem.
✔️ ZADEJTE hodnotu nula pro jednoduché výčtové typy.
Zvažte označení hodnoty jako "Žádná". Pokud taková hodnota není vhodná pro tento konkrétní výčet, měla by být nejběžnější výchozí hodnota výčtu přiřazena základní hodnotou nula.
✔️ ZVAŽTE použití Int32 (výchozí ve většině programovacích jazyků) jako základního typu výčtu, pokud není splněna některá z následujících možností:
Výčet je výčtem příznaků a máte více než 32 příznaků nebo očekáváte, že v budoucnu budete mít více.
Základní typ se musí lišit od Int32, aby se usnadnila interoperabilita s nespravovaným kódem, který očekává výčtové typy různých velikostí.
Menší základní typ by vedlo k podstatným úsporám v prostoru. Pokud očekáváte, že se výčet použije hlavně jako argument pro tok řízení, velikost nečiní velký rozdíl. Úspory velikosti můžou být významné v následujících případech:
Očekáváte, že se výčet použije jako pole ve velmi často instanciované struktuře nebo třídě.
Očekáváte, že uživatelé budou vytvářet velká pole nebo kolekce instancí výčtu.
Očekáváte, že bude serializován velký počet instancí výčtu.
cs-CZ: U použití v paměti mějte na paměti, že spravované objekty jsou vždy DWORD-zarovnané. Takže pro zefektivnění potřebujete v instanci více výčtů nebo jiných malých struktur, aby se menší výčet spojil a vytvořil rozdíl, protože celková velikost instance se vždy zaokrouhlí nahoru na DWORD.
✔️ Pojmenovávejte výčtové příznaky pomocí množných podstatných jmen nebo frází a jednoduché výčty pomocí jednotných podstatných jmen nebo frází.
❌ NEPRODLUŽUJTE System.Enum přímo.
System.Enum je speciální typ používaný CLR k vytvoření uživatelsky definovaných výčtů. Většina programovacích jazyků poskytuje programovací prvek, který poskytuje přístup k této funkci. Například v jazyce C# enum se klíčové slovo používá k definování výčtu.
Návrh výčtů příznaků
✔️ Aplikujte System.FlagsAttribute na indikátory výčtů. Nepoužívejte tento atribut na jednoduché výčty.
✔️ Pro hodnoty výčtu příznaku používejte mocniny dvou, aby mohly být volně kombinovány pomocí bitového operátoru OR.
✔️ ZVAŽTE poskytnutí speciálních výčtových hodnot pro běžně používané kombinace příznaků.
Bitové operace jsou pokročilým konceptem a neměly by se vyžadovat pro jednoduché úlohy. ReadWrite je příkladem takové zvláštní hodnoty.
❌ Vyhněte se vytváření výčtů s příznaky, kde jsou některé kombinace hodnot neplatné.
❌ Vyhněte se používání hodnot výčtu příznaku s hodnotou nula, pokud hodnota nepředstavuje "všechny příznaky jsou vymazány" a je pojmenována odpovídajícím způsobem, jak je uvedeno v dalším pokynu.
✔️ DO pojmenujte nulovou hodnotu příznakového výčtu jako None. U výčtu příznaku musí hodnota vždy znamenat " všechny příznaky jsou vymazány".
Přidání hodnoty do výčtů
Je velmi běžné zjistit, že potřebujete přidat hodnoty do výčtu po jeho odeslání. Při vrácení nově přidané hodnoty z existujícího rozhraní API může dojít k problému s kompatibilitou aplikací, protože špatně napsané aplikace nemusí novou hodnotu zpracovat správně.
✔️ ZVAŽTE přidání hodnot do výčtů, navzdory malému riziku kompatibility.
Pokud máte skutečná data o nekompatibilitě aplikací způsobených přidáním prvků do výčtu, zvažte přidání nového rozhraní API, které vrací nové a staré hodnoty, a přímo zrušte staré rozhraní API, které by mělo pokračovat ve vracení pouze starých hodnot. Tím zajistíte, že vaše stávající aplikace zůstanou kompatibilní.
Části z © 2005, 2009 Microsoft Corporation. Všechna práva vyhrazena.
Přetištěno se svolením Pearson Education, Inc. z Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition od Krzysztofa Cwaliny a Brada Abramse, vydáno 22. října 2008 nakladatelstvím Addison-Wesley Professional jako součást série Microsoft Windows Development.