我有简单的课程:
class Blah {
private PApplet applet;
private float value;
public Blah(PApplet theApplet, theValue) {
applet = theApplet;
value = theValue;
}
public float getX() {
return PApplet.map(value, applet.min, applet.max, applet.c1, applet.c2);
}
}
我现在不知道,是否可以getX()
按照说明进行操作?
我不应该xpos
为此声明一个变量以及一个setter和getter吗?在这种情况下,如何决定是否应声明实例变量?(其中一个实例变量值取决于另一个实例变量)
使用xpos
实例变量,我将拥有:
class BlahBla {
private PApplet applet;
private float value;
private float xpos;
BlahBla(PApplet theApplet, float theValue) {
applet = theApplet;
value = theValue;
xpos = PApplet.map(theValue, applet.min, applet.max, applet.c1, applet.c2);
}
public getX() {
return xpos;
}
public setX(float theValue) {
xpos = map(theValue, applet.min, applet.max, applet.c1, applet.c2);
}
}
xpos
作为实例变量的优点:
getX()
调用我都不做映射xpos
作为实例变量的缺点:
注意事项:
设置员不应该直接将值分配给xpos
吗?这里应该允许任何操作(例如映射)吗?
xpos
应该链接到value
-setX()
没有参数创建是否有效?如果我有xpos
变量并且set(float theValue)
作为public-这打破了两者之间的联系,xpos
并且value
由于使用setter允许分配除以外的任何数据value
。
按照您的第一个版本,只有一个吸气剂:没有字段:
value
对象寿命等发生变化的情况(今天可能不会发生,但有一天可能会发生)将计算出的属性存储在字段中的唯一原因是“性能”,但是如果您在设计时考虑它,那本身就是一个大错误。仅当您有确凿的证据确实存在性能问题时,才考虑使用字段。同样,如果只为某些对象调用getter,则为所有对象计算它会很浪费。
在任何一种情况下都没有必要,也没有意义。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句