java - 变量名与对象类型相同?

标签 java naming-conventions

我曾多次被告知永远不要做以下事情:

Dog   dog   = new Dog();
Entry entry = new Entry();
//etc...

请注意 Type 如何/Object名字是 Dogvariable名字是 dog 。做这样的事情真的被认为是糟糕的编程,还是只是不受欢迎?这如何导致其他人阅读您的程序时可读性较差?

感谢您的澄清。

最佳答案

这本身并不是一个坏主意,但它实际上取决于对象的含义。我会用一个例子来说明:

class Engine {

}

class Car {
  private Engine engine;
}

您可以在这里看到,命名实例变量 engine 不会对可读性产生任何影响。 汽车有一个引擎,在这种情况下,类的名称和实例变量的名称不会产生任何问题。

但考虑另一个例子:

class Point {

}

class Circle {
  private Point point;
}

在这里您可以看到为什么这在所有情况下都不是一个好主意。一个有一个,称为。很好,但是这一点是什么?仅仅将其称为“点”对于读者来说并不能提供任何信息。也许center会更合适。

通常,类名代表该类型的所有可能对象的集群。这意味着它的名称通常是通用的。这意味着一般来说,拥有与对象同名的实例变量应该不足以提供足够的信息,当然,在某些情况下,您需要理解的所有内容都可以从上下文中推断出来(请参阅Car) > 示例),但您应该真正考虑具体情况。

关于java - 变量名与对象类型相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19759545/

相关文章:

c# - 属性应该与其类型同名吗?

c# - 数字范围的命名约定

python - 为什么 `float.is_integer` 中有下划线,但 `str.isnumeric` 中没有?

java - 命名异常 : Cannot create resource instance for jta. 用户事务

java - 我的 Cucumber 脚本无法与 Appium 服务器一起使用?

java - 如何从 javax.lang.model.VariableElement 获取参数类型

.net - 州/地区/省命名约定

java - ClassNotFoundException org.apache.mahout.math.VectorWritable

java - Android应用程序代码中的"%02d"

dart - 为什么一些 Dart 内置类型以大写字母开头(List、Map、String)而另一些以小写字母开头(number、int、double、bool)?