Mientras revisaba algún código, noté la oportunidad de cambiarlo para usar genéricos. El código (ofuscado) se ve así:
public void DoAllTheThings(Type typeOfTarget, object[] possibleTargets)
{
var someProperty = typeOfTarget.GetProperty(possibleTargets[0]);
...
}
Este código podría ser reemplazado por genéricos, así:
public void DoAllTheThings<T>(object[] possibleTargets[0])
{
var someProperty = type(T).getProperty(possibleTargets[0]);
...
}
Al investigar los beneficios y las deficiencias de este enfoque, encontré un término llamado abuso genérico . Ver:
- Proteger a los no iniciados (desarrollador) de los genéricos
- https://stackoverflow.com/questions/28203199/is-this-an-abuse-of-generics
- https://codereview.stackexchange.com/q/60695
Mi pregunta viene en dos partes:
- ¿Hay algún beneficio en pasar a genéricos como este? (¿Rendimiento? ¿Legibilidad?)
- ¿Qué es el abuso genérico? ¿Y el uso de un genérico cada vez que hay un parámetro de tipo es un abuso ?