Surcharge de membre

Remarque

Ce contenu est réimprimé avec l’autorisation de Pearson Education, Inc. à partir des Instructions de conception d’une infrastructure : conventions, idiomes et modèles des bibliothèques réutilisables .NET, 2ème édition. Cette édition a été publiée en 2008, et le livre a été entièrement révisé dans la troisième édition. Certaines informations de cette page peuvent être obsolètes.

La surcharge de membre signifie la création de deux membres ou plus sur le même type qui diffèrent uniquement par le nombre ou le type de paramètres, mais qui ont le même nom. Par exemple, dans ce qui suit, la méthode WriteLine est surchargée :

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

Étant donné que seuls les constructeurs, les méthodes et les propriétés indexées peuvent avoir des paramètres, seuls ces membres peuvent être surchargés.

La surcharge est l’une des techniques les plus importantes pour améliorer la convivialité, la productivité et la lisibilité des bibliothèques réutilisables. La surcharge du nombre de paramètres permet de fournir des versions plus simples des constructeurs et des méthodes. La surcharge sur le type de paramètre permet d’utiliser le même nom de membre pour les membres effectuant des opérations identiques sur un ensemble sélectionné de types différents.

✔️ ESSAYEZ d’utiliser des noms de paramètres descriptifs pour indiquer la valeur par défaut utilisée par les surcharges plus courtes.

❌ ÉVITEZ de faire varier arbitrairement les noms de paramètres dans les surcharges. Si un paramètre dans une surcharge représente la même entrée qu’un paramètre dans une autre surcharge, les paramètres doivent avoir le même nom.

❌ ÉVITEZ d’être incohérent dans l’ordre des paramètres dans les membres surchargés. Les paramètres portant le même nom doivent apparaître dans la même position dans toutes les surcharges.

✔️ SEULEMENT rendre virtuelle la surcharge la plus longue (si l’extensibilité est requise). Les surcharges plus courtes doivent simplement appeler une surcharge plus longue.

❌ N’utilisez PAS les modificateurs ref ou out pour surcharger les membres.

Certains langages ne peuvent pas résoudre les appels à des surcharges de ce type. En outre, ces surcharges ont généralement une sémantique complètement différente et ne devraient probablement pas être des surcharges, mais deux méthodes distinctes à la place.

❌ N’ayez PAS de surcharges avec des paramètres à la même position et des types similaires, mais avec une sémantique différente.

✔️ PERMETTEZ à null d’être passé pour les arguments facultatifs.

✔️ UTILISEZ la surcharge des membres plutôt que de définir des membres avec des arguments par défaut.

Les arguments par défaut ne sont pas conformes CLS.

Portions © 2005, 2009 Microsoft Corporation. Tous droits réservés.

Réimprimé avec l’autorisation de Pearson Education, Inc. et extrait de Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition par Krzysztof Cwalina et Brad Abrams, publié le 22 octobre 2008 par Addison-Wesley Professional dans le cadre de la série sur le développement Microsoft Windows.

Voir aussi