Eu estava assistindo a palestra de Anders sobre C # 4.0 e uma prévia do C # 5.0 , e isso me fez pensar sobre quando parâmetros opcionais estão disponíveis em C # qual será a maneira recomendada de declarar métodos que não precisam de todos os parâmetros especificados?
Por exemplo, algo como a FileStream
classe tem cerca de quinze construtores diferentes que podem ser divididos em 'famílias' lógicas, por exemplo, os que estão abaixo de uma string, os de an IntPtr
e os 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);
Parece-me que esse tipo de padrão poderia ser simplificado tendo três construtores, e usando parâmetros opcionais para aqueles que podem ser padronizados, o que tornaria as diferentes famílias de construtores mais distintas [nota: eu sei que essa mudança não será feita na BCL, estou falando hipoteticamente para esse tipo de situação].
O que você acha? A partir do C # 4.0, fará mais sentido transformar grupos intimamente relacionados de construtores e métodos em um único método com parâmetros opcionais ou há um bom motivo para continuar com o mecanismo tradicional de sobrecarga?