Question

Les paramètres par défaut des méthodes violent-ils l'encapsulation?

Pour quelle raison ne fournissait-il pas de paramètres par défaut en C #?

Était-ce utile?

La solution

Je considérerais ceci comme le " officiel " réponse de Microsoft. Cependant, les paramètres par défaut (et nommés) seront très certainement disponibles en C # 4.0.

Autres conseils

Non, cela n’affecte en aucun cas l’encapsulation. Ce n'est simplement pas souvent nécessaire. Créer une surcharge qui nécessite moins d’arguments est souvent une solution plus souple et plus propre. Le concepteur de C # n’a donc aucune raison d’ajouter à la complexité des paramètres par défaut.

Ajout de " Une autre façon de faire la même chose " est toujours un compromis. Dans certains cas, cela peut être pratique. Mais plus vous faites de la syntaxe légale, plus le langage à apprendre devient complexe et plus vous risquez de vous dissimuler, empêchant toute extension future. (Peut-être qu'un jour, ils proposeraient une autre extension du langage, qui utilise une syntaxe similaire. Il serait alors impossible de l'ajouter, car cela entrerait en conflit avec la fonctionnalité qu'ils avaient précédemment ajoutée.

Comme il a été noté, les paramètres par défaut n'étaient pas une fonctionnalité prioritaire, mais sont susceptibles d'être ajoutés en C # 4.0. Cependant, je pense qu’il existait d’excellentes raisons de ne pas l’inclure plus tôt (dans la version 4.0, telle que je l’ai comprise, c’est surtout pour soutenir duck taping styles de programmation où les paramètres par défaut augmentent la compatibilité des types).

Je crois que des listes de paramètres excessives (certainement plus de 4 à 5 paramètres distincts) constituent un odeur de code . Les paramètres par défaut ne sont pas mauvais en eux-mêmes, mais risquent d'encourager une conception médiocre, retardant le refactoring dans plusieurs objets.

En ce qui concerne votre première question - non, c’est exactement la même chose que de fournir plusieurs constructeurs surchargés. Quant à la seconde, je ne saurais dire.

Les paramètres par défaut seront inclus dans C # 4.0

Quelques lectures à ce sujet:

cliquez sur

cliquez

Il semble également que l'auteur de cet article publiera prochainement un article sur le 'pourquoi' MS choisit d'implémenter les paramètres par défaut en C #

Voici une réponse pour laquelle ce n'est pas fourni en C # http://blogs.msdn.com/csharpfaq/archive/ 2004/03/07 / 85556.aspx

Un inconvénient de l'implémentation du paramètre par défaut dans C # 4.0 est qu'il crée une dépendance sur le nom du paramètre. Cela existait déjà dans VB, ce qui pourrait être l'une des raisons pour lesquelles ils ont choisi de l'implémenter en 4.0.

Un autre inconvénient est que la valeur par défaut dépend de la manière dont vous convertissez votre objet. Vous pouvez en savoir plus à ce sujet ici: http://saftsack.fs.uni-bayreuth.de/~dun3/archives/optional-parameters-conclusion-treat-like-unsafe/216.html .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top