Przeglądając jakiś kod, zauważyłem możliwość jego zmiany w celu użycia generycznych. Kod (zaciemniony) wygląda następująco:
public void DoAllTheThings(Type typeOfTarget, object[] possibleTargets)
{
var someProperty = typeOfTarget.GetProperty(possibleTargets[0]);
...
}
Ten kod można zastąpić ogólnymi, takimi jak:
public void DoAllTheThings<T>(object[] possibleTargets[0])
{
var someProperty = type(T).getProperty(possibleTargets[0]);
...
}
Badając zalety i wady tego podejścia, znalazłem termin zwany nadużyciem ogólnym . Widzieć:
- Ochrona niewtajemniczonych (programistów) przed lekami generycznymi
- https://stackoverflow.com/questions/28203199/is-this-an-abuse-of-generics
- https://codereview.stackexchange.com/q/60695
Moje pytanie składa się z dwóch części:
- Czy są jakieś korzyści z przejścia na takie leki generyczne? (Wydajność? Czytelność?)
- Co to jest nadużycie generyczne? I czy używanie generycznych za każdym razem, gdy występuje parametr typu, stanowi nadużycie ?