Sobrecarga de membros
Nota
Este conteúdo é reimpresso com permissão da Pearson Education, Inc., a partir 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 revisto na terceira edição. Algumas das informações nesta página podem estar desatualizadas.
Sobrecarga de membros significa criar dois ou mais membros no mesmo tipo que diferem apenas no número ou tipo de parâmetros, mas têm o mesmo nome. Por exemplo, no seguinte, o WriteLine
método está sobrecarregado:
public static class Console {
public void WriteLine();
public void WriteLine(string value);
public void WriteLine(bool value);
...
}
Como apenas 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 torna possível fornecer versões mais simples de construtores e métodos. A sobrecarga no tipo de parâmetro torna possível usar o mesmo nome de membro para membros que executam operações idênticas em um conjunto selecionado de tipos diferentes.
✔️ DO tente usar nomes de parâmetros descritivos para indicar o padrão usado por sobrecargas mais curtas.
❌ EVITE variar arbitrariamente nomes de parâmetros em sobrecargas. Se um parâmetro em uma sobrecarga representa a mesma entrada que um parâmetro em outra sobrecarga, os parâmetros devem ter o mesmo nome.
❌ EVITE ser inconsistente na ordenação de 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 para uma sobrecarga mais longa.
❌ NÃO use ref
modificadores out
para sobrecarregar membros.
Alguns idiomas não conseguem resolver chamadas para sobrecargas como esta. Além disso, tais sobrecargas geralmente têm semânticas completamente diferentes e provavelmente não devem ser sobrecargas, mas dois métodos separados.
❌ NÃO tem sobrecargas com parâmetros na mesma posição e tipos semelhantes, mas com semânticas diferentes.
✔️ DO permitir que null
sejam passados para argumentos opcionais.
✔️ USE sobrecarga de membros em vez de definir membros com argumentos padrão.
Os argumentos padrão não são compatíveis com CLS.
© Partes 2005, 2009 Microsoft Corporation. Todos os direitos reservados.
Reimpresso com permissão da Pearson Education, Inc., de Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition por Krzysztof Cwalina e Brad Abrams, publicado em 22 de outubro de 2008 por Addison-Wesley Professional como parte da Microsoft Windows Development Series.