为什么Java程序员喜欢命名变量"clazz"?

Saw*_*yer 145 java naming-conventions

我已经看到很多代码都有声明Class clazz,这起源于哪里?这是某种惯例吗?我认为'clazz'甚至不是英文单词,根本没有任何意义,这么多程序员怎么能巧妙地命名一个错误的名字呢?

Tom*_*ine 163

clazz自JDK 1.0以来,已用Java代替保留字"class"."class"是你想要的,但缩写或插入垃圾("a","the","_"等)会降低清晰度.clazz只是说上课."国际"英语使用者(那些阅读英语和美国人)用于转置"s"和"z".

由于Java从一开始就已经公开了源代码和合适的文化,因此有价值的Java代码和教程会采用相同的约定.这是Java生态系统的一大优势,我认为这是其成功的重要组成部分.

  • 很难同意"clazz"比"_class"或"myClass"更清晰.如果我在代码中看到"_class",那么意图比发送给Google(以及此页面)的非单词更明显. (76认同)
  • @uscjeremy*很难同意"clazz"比"_class"或"myClass"更明确* - 是的.但是,使用"_class"不是一个选项,因为它明显与[Java命名约定](http://www.oracle.com/technetwork/java/codeconventions-135099.html)冲突. (3认同)

Jam*_*olk 69

因为他们不能使用他们想要使用的词,即"类".这是保留的.

  • @Tony - 你怎么能说"你知道"并要求变量名拼写在同一条评论中?它们是相互排斥的. (21认同)
  • 我猜Tony想要将变量命名为比"class"更具描述性的东西.例如,可以说"x"拼写正确,但它并不像"numberOfComments"那么多 (11认同)
  • @duffymo:这很有趣.我知道类是保留字,我确实要求变量名拼写正确,为什么它们互相排斥?你必须称它为"课堂"吗? (5认同)
  • 是的,我知道,但我认为拼写正确的变量会更有意义。 (3认同)
  • @Tony,你根本无法命名变量"class",它是一个保留字. (3认同)
  • 如果“class”的拼写正确,那么你就不能使用它。所以它们是互斥的。你真的没看到吗?那你就不知道了。 (2认同)

sfu*_*ger 16

这只是因为'class'是保留关键字,因此Class class是不允许的.所以你会看到Class clazzClass cls.

  • @Blindy:已经有一个名为Class的类,它引用了一个对象的类.拥有一个名为'class'的变量的完美理由是当你使用一个对象的类时(即:弄清楚一个对象是什么类型) (14认同)
  • 你没有命名类Class,它是java API. (8认同)
  • 我想不出有一个命名类Class的原因,因为在任何给定的项目中都有很多类调用类,这类似乎没有意义.我也想不出有理由调用VARIABLE`class` ... (6认同)
  • @Blindy:java.lang.Class怎么样?那里你没有太多选择. (3认同)
  • 我会考虑信息丰富的`ClassInformation`,或`ClassMetadata`或类似的东西.每个类都是一个类,但是你没有将它们全部命名为"Class",你可以通过它们的主函数命名它们. (2认同)
  • @Blindy事实上,已经有一个名为Class的类.包含对此类实例的引用的变量通常称为clazz或cls - 这就是这个问题的含义.由于Class是Java的重要成员,因此命名为ClassInformation或ClassMetadata不会增加太多价值 - 每个人都知道它的作用.这是其中一个短名称就足够了并节省输入的情况 - 就像`$()`函数一样,使这个JavaScript家伙成为编程摇滚明星:) (2认同)

Joh*_*ohn 7

它归结为实际的编译器及其区分令牌在其上下文中的含义的能力.但是,在这种特殊情况下,编译器无法区分令牌class在不同上下文中的含义.这是一个严格而快速的规则class,无论其上下文如何,都用于表示类的声明,因此它是一个保留字.这就像它获得的那样简单和低级.

如果您感到有必要,可以编写自己的Java编译器以包含允许您class用作变量名称的上下文规则.虽然我认为用你的时间可以更好地利用clazz或者klass- 这对你的健康也有好处.

  • 关于*无能*的一句话:Java被**设计为*保留字*语言.非保留字语言可以成功编译和语法高亮语句,例如*if if then else else else*,尽管(un)可读性.所以编译器故意留下*无法* (3认同)

Mic*_*das 7

声明Class clazz在 Java 世界中很流行,但对于新手和拼写检查人员来说可能会很尴尬。我听一些人说,根据最小惊讶原则应该避免这种情况。

由于可以说Class对象代表一种类型,因此我个人更喜欢将此类变量声明为Class type.