Ao revisar algum código, notei a oportunidade de alterá-lo para usar genéricos. O código (ofuscado) se parece com:
public void DoAllTheThings(Type typeOfTarget, object[] possibleTargets)
{
var someProperty = typeOfTarget.GetProperty(possibleTargets[0]);
...
}
Este código pode ser substituído por genéricos, da seguinte forma:
public void DoAllTheThings<T>(object[] possibleTargets[0])
{
var someProperty = type(T).getProperty(possibleTargets[0]);
...
}
Ao pesquisar os benefícios e deficiências dessa abordagem, encontrei um termo chamado abuso genérico . Vejo:
- Protegendo os não iniciados (desenvolvedor) de genéricos
- https://stackoverflow.com/questions/28203199/is-this-an-abuse-of-generics
- https://codereview.stackexchange.com/q/60695
Minha pergunta vem em duas partes:
- Existem benefícios em mudar para genéricos como esse? (Desempenho? Legibilidade?)
- O que é abuso de genéricos? E está usando um genérico toda vez que há um parâmetro de tipo um abuso ?