是否有使用公共变量会有益的情况? 如果不是,为什么它们甚至存在?
我也特别谈论Java,但如果它们在另一种语言中使用,也许会为它们的存在提供理由。
是的,我用它们来表示向量。
public class Vec3f {
public final float x, y, z;
// the methods
}
请注意,由于这些是最终基元,因此公开它们是安全的。这在代码中较短,并且使用的方法调用更少(无)。
一般来说,如果最终确定,它们可以在值对象中使用(让我们使用该名称)。我将值对象定义为可能不可变的,可能是仅保存数据的短期对象,在突变时产生新对象。
不过,您不应该在公共 API 中使用公共非最终变量......
公共静态最终变量是定义常量的常用且方便的方法
公共成员变量有点难以证明,但是我已经看到了大量的bean类型对象,其中包含大量私有成员变量和相应的getter和setter,它们除了返回或设置私有变量之外什么都不做。在这些情况下,有一个参数可以使这些变量公开,因为数据几乎不会被类"封装"——用户可以将其设置为他们喜欢的任何内容,并且他们检索变量设置为的任何内容而无需任何修改。
我个人不这样做,但我也不是100%反对它。
全局变量(当语言允许时)可能会导致重大问题,尤其是在复杂系统中,一段代码可以随时更改其值。除了在不应该有的地方之间建立耦合之外。
所以避免
在java中,我通常在单个集中式源代码中使用公共最终常量。