在这个简单的程序中,这个好习惯还是什么? 我们可以在变量中使用与class相同的名称吗?如果是,是否有一些特定术语可以使用它?这是一个好习惯吗?
class test {
public static void main (String args[]) {
int test;
System.out.println(test);
}
}
答案 0 :(得分:1)
从语言语法 - 语法角度来看,这是完美的。编译器不会将类名与变量名混合,因为两者都在不同的范围内。两者对编译器都意味着不同的东西。因此,将变量名称与类名称相同是完全正确的。
下一个方面是可读性和可维护性。在这方面,两者都是相同的是非常糟糕的做法。因为人类彼此错误。你问自己的一个问题是,很难维护和管理这样一段代码。
此外,您提供的程序将导致编译错误,表示测试未初始化。
答案 1 :(得分:0)
Java中有明确定义的命名约定。类名应以大写字母开头,变量应以小写字母开头。这些规则未得到强制执行,因此您发现可以定义与类同名的变量。在任何语言中,如果两个实体具有相同的名称,语言设计者必须决定如何解释该名称。在这种情况下,决定每当变量在范围内时,名称指的是变量,而不是类。因此,不可能通过简单的名称来引用类(尽管如此,您仍然可以使用其完全限定的名称)。结果,它被称为模糊。您不应该这样做,因为如果您不遵守标准命名约定,那么阅读您的代码的人会非常困惑。您也应该这样做,因为阅读代码的人可能不知道名称是指变量还是类。他们没有理由知道 - 这是一个非常模糊的Java角落,无论如何都没有理由这样做。
有关更多信息,Bloch和Gafter的Java Puzzler包含了Java中所有不同类型的名称重用的详细讨论(第180-182页)(覆盖,隐藏,重载,阴影和模糊)。