Я знаю, что не все подходят к написанию кода таким образом, но я чувствую, что код должен демонстрировать намерения программиста, где это возможно.Сигнатуры методов обычно должны предлагать достаточно информации, без каких-либо комментариев и т. Д., Чтобы указать, что метод делает.
Мое возражение против использования таких обобщений заключается в том, что он не передает такую информацию.Поскольку он принимает неограниченный универсальный параметр, T
, можно заключить, что любой объект может быть передан вашему универсальному методу и что он будет возвращать цвет.Действительно, если бы этот код находился в библиотеке с закрытым исходным кодом, как вызывающий мог узнать, что делает реальная реализация?
Методы перегрузки превосходят в этом отношении.Они четко выражают намерения и работают так, как вы ожидаете, без необходимости углубляться в их исходный код, чтобы выяснить, как они работают.
Что касается производительности, то перегрузки будут превосходными, поскольку будет выбрана перегрузка метода.в время компиляции .Для сравнения, универсальный метод будет ограничен проверкой предоставленных типов в runtime , что будет медленнее.