Przeciążanie składowej

Uwaga

Ta zawartość jest drukowana przez uprawnienie Pearson Education, Inc. z Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition. Wydanie to zostało opublikowane w 2008 roku, a książka została w pełni zmieniona w trzecim wydaniu. Niektóre informacje na tej stronie mogą być nieaktualne.

Przeciążenie składowe oznacza utworzenie co najmniej dwóch elementów członkowskich tego samego typu, które różnią się tylko liczbą lub typem parametrów, ale mają taką samą nazwę. Na przykład w następującej WriteLine metodzie jest przeciążona:

public static class Console {
    public void WriteLine();
    public void WriteLine(string value);
    public void WriteLine(bool value);
    ...
}

Ponieważ tylko metody, konstruktory i właściwości indeksowane mogą mieć parametry, tylko te elementy członkowskie mogą być przeciążone.

Przeciążenie jest jedną z najważniejszych technik poprawy użyteczności, produktywności i czytelności bibliotek wielokrotnego użytku. Przeciążenie liczby parametrów umożliwia zapewnienie prostszych wersji konstruktorów i metod. Przeciążenie typu parametru umożliwia użycie tej samej nazwy składowej dla składowych wykonujących identyczne operacje na wybranym zestawie różnych typów.

✔️ Spróbuj użyć opisowych nazw parametrów, aby wskazać domyślne używane przez krótsze przeciążenia.

❌ UNIKAJ arbitralnie różnych nazw parametrów w przeciążeniach. Jeśli parametr w jednym przeciążeniu reprezentuje te same dane wejściowe co parametr w innym przeciążeniu, parametry powinny mieć taką samą nazwę.

❌ UNIKAJ niespójności w kolejności parametrów w przeciążonych elementach członkowskich. Parametry o tej samej nazwie powinny być wyświetlane w tej samej pozycji we wszystkich przeciążeniach.

✔️ Wykonaj tylko najdłuższe przeciążenie wirtualne (jeśli wymagana jest rozszerzalność). Krótsze przeciążenia powinny po prostu wywoływać do dłuższego przeciążenia.

❌ NIE NALEŻY używać ref ani out modyfikatorów do przeciążenia elementów członkowskich.

Niektóre języki nie mogą rozpoznawać wywołań takich przeciążeń. Ponadto takie przeciążenia zwykle mają zupełnie inną semantykę i prawdopodobnie nie powinny być przeciążeniami, ale zamiast tego dwie oddzielne metody.

❌ NIE MAJĄ przeciążeń z parametrami w tej samej pozycji i podobnych typach, ale z różnymi semantykami.

✔️ Nie zezwalaj na null przekazywanie dla opcjonalnych argumentów.

✔️ Należy użyć przeciążenia elementu członkowskiego, a nie definiowania składowych z domyślnymi argumentami.

Argumenty domyślne nie są zgodne ze specyfikacją CLS.

© Części 2005, 2009 Microsoft Corporation. Wszelkie prawa zastrzeżone.

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 w ramach Microsoft Windows Development Series.

Zobacz też