有没有使用公共变量的情况会有益吗?如果没有,为什么他们甚至存在?
此外,我特别谈论Java,但如果他们使用其他语言或许可以说明他们的存在。
答案 0 :(得分:3)
是的,我用它们代表矢量。
public class Vec3f {
public final float x, y, z;
// the methods
}
请注意,因为这些是最终基元,所以公开它们是安全的。这在代码中较短,并且使用较少的方法调用(无)。
一般来说,如果最终成功,它们可以用于值对象(让我们使用该名称)。 我将值对象定义为可能不可变的,可能是短暂的对象,只保存数据,在变异时产生新的对象。
您不应在公共API中使用公共非最终变量,但是......
答案 1 :(得分:0)
公共成员变量有点难以证明,但是我看到了大量的bean类型对象,其中包含一些私有成员变量和一组相应的getter和setter,它们只返回或设置私有变量。在这些情况下,有一个论点要将这些变量公开,因为数据很难被类“封装” - 用户可以将它设置为他们喜欢的任何东西,并且他们可以检索变量设置的任何内容而无需任何修改。
我个人并不这样做,但我也不是100%反对它。
答案 2 :(得分:0)
全局变量(当语言允许时)可能会导致重大问题,尤其是在复杂系统中,其中一段代码可以随时更改其值。除了在不应该有的地方之间创建耦合。
所以避免
在java中,我通常在单个集中源中使用公共最终常量。