Přetížení člena
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é.
Přetížení člena znamená vytvoření dvou nebo více členů stejného typu, které se liší pouze v počtu nebo typu parametrů, ale mají stejný název. Například v následujícím příkladu WriteLine
je metoda přetížena:
public static class Console {
public void WriteLine();
public void WriteLine(string value);
public void WriteLine(bool value);
...
}
Protože parametry mohou mít pouze metody, konstruktory a indexované vlastnosti, lze přetížit pouze tyto členy.
Přetížení je jednou z nejdůležitějších technik pro zlepšení použitelnosti, produktivity a čitelnosti opakovaně použitelných knihoven. Přetížení počtu parametrů umožňuje poskytovat jednodušší verze konstruktorů a metod. Přetížení typu parametru umožňuje použít stejný název člena pro členy provádějící stejné operace u vybrané sady různých typů.
✔️ Zkuste použít popisné názvy parametrů k označení výchozí hodnoty používané kratšími přetíženími.
❌ Vyhněte se libovolným různým názvům parametrů v přetížení. Pokud parametr v jednom přetížení představuje stejný vstup jako parametr v jiném přetížení, parametry by měly mít stejný název.
❌ Vyhněte se nekonzistentnímu pořadí parametrů v přetížených členech. Parametry se stejným názvem by se měly ve všech přetíženích zobrazovat na stejné pozici.
✔️ Proveďte pouze nejdelší virtuální přetížení (pokud je požadována rozšiřitelnost). Kratší přetížení by se mělo jednoduše volat k delšímu přetížení.
❌ NEPOUŽÍVEJTE ref
nebo out
modifikátory k přetížení členů.
Některé jazyky nemůžou přetížit podobná volání. Kromě toho mají taková přetížení obvykle zcela odlišnou sémantiku a pravděpodobně by neměla být přetížení, ale dvě samostatné metody.
❌ NEMÁ přetížení s parametry na stejné pozici a podobné typy, ale s různými sémantikou.
✔️ Do allow null
to be passed for optional arguments.
✔️ Místo definování členů s výchozími argumenty používejte přetížení členů.
Výchozí argumenty nejsou kompatibilní se specifikací CLS.
© Části 2005, 2009 Microsoft Corporation. Všechna práva vyhrazena.
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 Oct 22, 2008 by Addison-Wesley Professional v rámci Microsoft Windows Development Series.