Sobrecarga de membro
Observação
Este conteúdo é reimpresso com permissão da Pearson Education, Inc. de Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition. Essa edição foi publicada em 2008 e, desde então, o livro foi totalmente revisado na terceira edição. Algumas das informações nesta página podem estar desatualizadas.
Sobrecarga de membro significa criar dois ou mais membros no mesmo tipo que diferem apenas no número ou no tipo de parâmetros, mas têm o mesmo nome. Por exemplo, a seguir, o método WriteLine
é sobrecarregado:
public static class Console {
public void WriteLine();
public void WriteLine(string value);
public void WriteLine(bool value);
...
}
Como somente métodos, construtores e propriedades indexadas podem ter parâmetros, somente esses membros podem ser sobrecarregados.
A sobrecarga é uma das técnicas mais importantes para melhorar a usabilidade, a produtividade e a legibilidade das bibliotecas reutilizáveis. A sobrecarga no número de parâmetros possibilita fornecer versões mais simples de construtores e métodos. A sobrecarga no tipo de parâmetro possibilita o uso do mesmo nome de membro para membros que executam operações idênticas em um conjunto selecionado de tipos diferentes.
✔️ TENTE usar nomes de parâmetro descritivos para indicar o padrão usado por sobrecargas mais curtas.
❌ EVITE variar arbitrariamente nomes de parâmetro em sobrecargas. Se um parâmetro em uma sobrecarga representar a mesma entrada que um parâmetro em outra sobrecarga, os parâmetros deverão ter o mesmo nome.
❌ EVITE ser inconsistente na ordenação dos parâmetros em membros sobrecarregados. Parâmetros com o mesmo nome devem aparecer na mesma posição em todas as sobrecargas.
✔️ FAÇA apenas a sobrecarga mais longa virtual (se a extensibilidade for necessária). Sobrecargas mais curtas devem simplesmente chamar uma sobrecarga mais longa.
❌ NÃO use os modificadores ref
ou out
para sobrecarregar membros.
Algumas linguagens não podem resolver chamadas para sobrecargas como esta. Além disso, essas sobrecargas geralmente têm semântica completamente diferente e provavelmente não devem ser sobrecargas, mas dois métodos separados.
❌ NÃO faça sobrecargas com parâmetros na mesma posição e tipos semelhantes ainda que com semântica diferente.
✔️ PERMITA que null
seja passado para argumentos opcionais.
✔️ USE sobrecarga de membro em vez de definir membros com argumentos padrão.
Os argumentos padrão não são compatíveis com CLS.
Portions © 2005, 2009 Microsoft Corporation. Todos os direitos reservados.
Reimpresso com permissão da Pearson Education, Inc. das Diretrizes de Design do Framework: convenções, linguagens e padrões para bibliotecas do .NET reutilizável, 2ª edição por Krzysztof Cwalina e Brad Abrams, publicado em 22 de outubro de 2008 por Addison-Wesley Professional como parte da série de desenvolvimento do Microsoft Windows.