变量名称与对象的类型相同?

时间:2013-11-03 23:32:46

标签: java naming-conventions

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

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

请注意Type / Object名称是Dogvariable名称是dog。做这样的事情真的被认为是错误的编程,还是只是不赞成?这会如何导致读取您节目的其他人的可读性差?

感谢您的澄清。

3 个答案:

答案 0 :(得分:5)

这本身并不是一个坏主意,但它实际上取决于对象的含义。我将通过一个例子说清楚:

class Engine {

}

class Car {
  private Engine engine;
}

您可以在此处看到,命名实例变量engine并不会对可读性做任何不好的事情。 Car有一个engine,在这种情况下,类的名称和实例变量不会产生任何问题。

但请考虑另一个例子:

class Point {

}

class Circle {
  private Point point;
}

在这里你可以看到为什么在所有情况下都不是一个好主意。 Circle有一个名为Point的{​​{1}}。好,但这是什么意思?仅仅point调用它并不能为读者提供信息。也许point会更合适。

通常,类名表示该类型的所有可能对象的集群。这意味着它的名称通常是通用的。这意味着通常具有与对象名称相同的实例变量应该没有足够的信息,当然在某些情况下,您需要理解的所有内容都可以从上下文推断出来(参见center示例)但你应该考虑具体案例。

答案 1 :(得分:0)

给出一个变量,一个与其类型相似的名称是没有错的。

Dog dog = new Dog();
Entry entry = new Entry()

都非常合理。这两个示例也符合Java命名建议,例如驼峰案例变量名称,类以可填写的字母开头等等......

答案 2 :(得分:-3)

Juts大声读出来 狗狗=新狗。

现在不这样做是有意义的......