Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Java程序员喜欢给变量命名;克拉兹;?_Java_Naming Conventions - Fatal编程技术网

为什么Java程序员喜欢给变量命名;克拉兹;?

为什么Java程序员喜欢给变量命名;克拉兹;?,java,naming-conventions,Java,Naming Conventions,我见过很多带有声明的代码,比如classclazz。这是从哪里来的?这是某种惯例吗?我认为“clazz”甚至不是一个英语单词,根本没有任何意义,那么多程序员怎么能巧合地说出一个错误的名字呢?因为他们不能使用他们想要使用的单词,即类。它是保留的。这只是因为“class”是保留关键字,因此不允许使用class类。因此,您将看到Class clazz或Class cls它只是一个英语单词,被关键字Class关键字替换(equalent),以使人们理解它是一个类。这几乎是为了提高代码的可读性 这里面没有

我见过很多带有声明的代码,比如
classclazz
。这是从哪里来的?这是某种惯例吗?我认为“clazz”甚至不是一个英语单词,根本没有任何意义,那么多程序员怎么能巧合地说出一个错误的名字呢?

因为他们不能使用他们想要使用的单词,即
。它是保留的。

这只是因为“class”是保留关键字,因此不允许使用
class类。因此,您将看到
Class clazz
Class cls

它只是一个英语单词,被关键字Class关键字替换(equalent),以使人们理解它是一个类。这几乎是为了提高代码的可读性

这里面没有什么大的逻辑

这是从哪里来的


我是在Josh Bloch的拼图游戏中第一次看到的。但我很确定其他开发人员早就使用了它。乔希·布洛赫只是让它更出名了

自JDK1.0以来,Java中使用了clazz来代替保留字“class”。“类”是你想要的,但缩写或插入垃圾(“a”、“the”、“_uu”等)会降低清晰度
clazz
只是说上课。说“国际”英语的人(同时读英式英语和美式英语的人)习惯于将“s”和“z”转置


因为Java从一开始就已经公开了源代码和合适的文化,所以有价值的Java代码和教程也采用了相同的约定。这是Java生态系统的一大优点,我认为这是其成功的一个重要部分。

Java没有允许您使用关键字作为标识符的功能,而C#的前缀是
@
(例如
@class
是有效标识符)

这取决于实际的编译器及其在上下文中区分标记含义的能力。然而,在这种特殊情况下,编译器无法区分令牌
在不同上下文中的含义。无论上下文如何,用
class
来表示类的声明是一条严格的规则,因此它是一个保留的字。这是最简单和最低级的


如果您觉得有必要,您可以编写自己的Java编译器,其中包含一个上下文规则,允许您使用
class
作为变量名。虽然我认为只使用
clazz
klass
会更好地利用您的时间,但这可能对您的健康也有好处。

我们使用clazz,因为类是类型标题。例如,您在此处使用类:

public class HelloWorld {
在这里:

Object.class.getName();

所以不幸的是,我们不得不使用诸如clazz之类的替代名称。

声明
类clazz
在Java世界很流行,但对于新手和拼写检查者来说可能会很尴尬。我听一些人说,根据法律,应该避免这种情况


因为可以说一个
对象,我个人更喜欢声明这样的变量,比如
类类型

,简单地说,
class
clazz
没有的类。

我想不出一个理由来命名一个类
class
,因为在任何给定的项目中有太多的类,所以调用一个类似乎是毫无意义的。我也想不出调用变量
class
…您没有命名一个类,它是java API。@Blindy:java.lang.class呢?你没有太多选择。@Blindy:已经有一个类叫做class,它引用了对象的类。拥有一个名为“类”的变量的完美理由是,当你处理一个对象的类(即:计算出一个对象的类型)时,我会考虑信息性>代码>类信息< /代码>,或者<代码>类元数据或类似的东西。每个类都是一个类,但你不能把它们全部命名为
class
,而是根据它们的主函数命名。是的,我知道,但我认为正确拼写变量会更有意义。@Tony-你怎么能说“你知道”并要求在同一条注释中正确拼写变量名?它们是相互排斥的。@Tony,你不能简单地将变量命名为“class”,它是一个保留字。@duffymo:这很有趣。我知道class是保留字,我确实要求变量名拼写正确,为什么它们是相互排斥的??你必须称它为“类”吗?我猜Tony希望变量的名称比“类”更具描述性。例如,“x”可以说拼写正确,但它的意思不如“numberOfComments”那么多。别忘了klass@彼得:说得好,那是一个克拉西语。已建议使用拼写为西里尔语的
Сclass
作为替代方法。@StuartMarks我拒绝这个建议。不客气。在英国,我们通常使用“clarse”。这是一个不同的标识符
class
$class
都是JVM中的有效标识符(但不同)。在虚拟机中,Java源文件中没有可以转换为
“class”
的标识符。很难同意“clazz”比“\u class”或“myClass”更清晰。如果我在代码中看到了“_class”,其意图将比发送给谷歌(以及本页面)的非单词更为明显。@uscjeremy:就个人而言,我更喜欢使用下划线,而不是只区分大小写的标识符。如果我设计一种语言,我会让它成为区分大小写和不区分大小写规则的混合体:任何标识符都只能在原来的大小写中使用,但任何标识符的声明都会隐藏任何先前存在的标识符,这些标识符只在大小写中有所不同。在类范围内定义
Foo
和在局部变量范围内定义
Foo
应该是合法的,但是在局部变量范围内对类范围变量的所有引用都应该要求
this.Foo<