I use the same naming convention for classes and type parameters. Similarly to how I use the same naming convention for both function parameters and variables. So if I need more than
T
I’ll use full words in camel case. E.g.
fun <Request,Criteria> createRequestRouter(criteriaFn: (Request)->Criteria, Map<Criteria,(Request)->Unit> handlers) = ...