Estaba viendo la charla de Anders sobre C # 4.0 y la vista previa de C # 5.0 , y me hizo pensar cuando los parámetros opcionales están disponibles en C #, ¿cuál será la forma recomendada de declarar métodos que no necesitan todos los parámetros especificados?
Por ejemplo, algo así como la FileStream
clase tiene alrededor de quince constructores diferentes que se pueden dividir en 'familias' lógicas, por ejemplo, los de abajo de una cadena, los de an IntPtr
y los de a 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);
Me parece que este tipo de patrón podría simplificarse teniendo tres constructores en su lugar, y usando parámetros opcionales para los que pueden estar predeterminados, lo que haría que las diferentes familias de constructores sean más distintas [nota: sé que este cambio no será hecho en la BCL, estoy hablando hipotéticamente para este tipo de situación].
¿Qué piensas? A partir de C # 4.0, ¿tendrá más sentido convertir los grupos de constructores y métodos estrechamente relacionados en un método único con parámetros opcionales, o hay una buena razón para seguir con el mecanismo tradicional de sobrecarga múltiple?