До сих пор я смотрел на все ответы и думаю, что все они частично правы, но не в полной мере рассматривают все ситуации.
Я считаю, что наименование должно всегда добавлять контекстуальное значение. Таким образом, именование параметра типа TEntity
, потому что его тип IEntity
будет неправильным, особенно если ограничение показывает его тип, и это показано в IntelliSense. Это было бы похоже на именование строковой переменной _string
. В современном программировании мы просто этого не делаем. Имена переменных должны отражать их функциональную роль. Параметры типа не должны отличаться.
В случае одного параметра типа контекст обычно должен быть очевидным с точки зрения класса, поэтому T
хорошо. Для параметров нескольких типов добавьте к каждому описательный контекст, например TKey
и TValue
. Это еще одна причина, по которой типы не должны использоваться - что, если оба параметра типа имеют одинаковый тип? TEntity1
и TEntity2
?
Если существуют ограничения с именами типов, которые добавляют желаемый контекст, тогда допустимо использовать T
, U
и т. Д. Или T1
, T2
и т. Д., Поскольку само ограничение отображает контекст , не говоря уже о IntelliSense.
Итак, мой ответ похож на ответы JaredPar и Tomas Lycken, но с дополнительной квалификацией и специально исключает третье правило Tomas Lycken, где вместо T
следует использовать в случае параметров одного типа с ограничением (из-за класса контекст и IntelliSense).