Просматривая некоторый код, я заметил возможность изменить его, чтобы использовать дженерики. (Запутанный) код выглядит так:
public void DoAllTheThings(Type typeOfTarget, object[] possibleTargets)
{
var someProperty = typeOfTarget.GetProperty(possibleTargets[0]);
...
}
Этот код можно заменить на дженерики, например, так:
public void DoAllTheThings<T>(object[] possibleTargets[0])
{
var someProperty = type(T).getProperty(possibleTargets[0]);
...
}
Исследуя преимущества и недостатки этого подхода, я нашел термин, называемый общим злоупотреблением . Видеть:
- Защита непосвященного (разработчика) от генериков
- https://stackoverflow.com/questions/28203199/is-this-an-abuse-of-generics
- https://codereview.stackexchange.com/q/60695
Мой вопрос состоит из двух частей:
- Есть ли какая-то польза от перехода на такие дженерики? (Производительность? Читабельность?)
- Что такое родовое насилие? И использует ли generic каждый раз, когда есть параметр типа, злоупотребление ?