有没有为Java类型参数添加美元符号前缀的原因?

时间:2015-12-16 21:54:39

标签: java generics naming-conventions

首先,我知道不要在类名中使用美元符号,因为内部类会在.class文件名中获得美元符号。我也看到了像this$0这样的合成变量名,所以我倾向于像任何优秀的Java程序员那样避免使用标识符中的美元符号。

但是,我发现像<T>这样的单字母类型参数令人反感。例如,如果我正在创建一个具有请求和响应参数的泛型类,那么我就会遇到命名问题。我应该使用什么,<TRequest, TResponse><R1, R2>?毛。

我开始做<$Request, $Response>。它是可读的,它是独特的,我无法想象任何.class文件命名冲突。对我而言,似乎是让Java代码更具可读性的低调成果。任何JVM大师或有见地的开发人员都想告诉我为什么这是一个糟糕的想法?

编辑:至于可读性,我可能会因为使用其他语言(其中变量以美元符号为前缀),而泛型类型具有比类型更多变量的类型而被吸引到此。至于惯例,是的,我是粉丝;我想知道这个 是否会作为惯例工作,或者某些技术问题会阻止它。

1 个答案:

答案 0 :(得分:3)

公约,公约,惯例。

虽然你可以按照自己的意愿行事,但可以找到一般惯例in the Java Trails

  

最常用的类型参数名称是:

     
      
  • E - Element(Java Collections Framework广泛使用)
  •   
  • K - Key
  •   
  • N - 数字
  •   
  • T - Type
  •   
  • V - 值
  •   
  • S,U,V等 - 第2,第3,第4类
  •   
     

您将在整个Java SE API中看到这些名称...

只有在以下情况下才能打破这些惯例:

  • 遵循上述协议会使通用更多混淆使用
  • 其他合作者可以轻松识别可读性增益

明确在$的情况下,JLS有 using $ as a generic identifier.

的推荐
  

$符号只能用于机械生成的源代码,或者很少用于访问旧系统上预先存在的名称。