Je regardais Discussion d'Anders sur C# 4.0 et avant-première de C# 5.0 Je me suis demandé, lorsque les paramètres optionnels seront disponibles en C#, quelle sera la manière recommandée de déclarer les méthodes qui n'ont pas besoin que tous les paramètres soient spécifiés ?
Par exemple, quelque chose comme le FileStream
possède une quinzaine de constructeurs différents qui peuvent être divisés en "familles" logiques, par exemple les constructeurs ci-dessous à partir d'une chaîne de caractères, les constructeurs à partir d'un fichier IntPtr
et ceux d'un SafeFileHandle
.
FileStream(string,FileMode);
FileStream(string,FileMode,FileAccess);
FileStream(string,FileMode,FileAccess,FileShare);
FileStream(string,FileMode,FileAccess,FileShare,int);
FileStream(string,FileMode,FileAccess,FileShare,int,bool);
Il me semble que ce type de schéma pourrait être simplifié en ayant trois constructeurs à la place, et en utilisant des paramètres optionnels pour ceux qui peuvent être mis par défaut, ce qui rendrait les différentes familles de constructeurs plus distinctes [note : je sais que ce changement ne sera pas fait dans la BCL, je parle de manière hypothétique pour ce type de situation].
Qu'en pensez-vous ? À partir de C# 4.0, sera-t-il plus logique de faire des groupes de constructeurs et de méthodes étroitement liés une seule méthode avec des paramètres optionnels, ou y a-t-il une bonne raison de s'en tenir au mécanisme traditionnel de surcharge multiple ?