我有一个普通的java问题,我正在寻找答案。假设我有一个属性高度的对象,我有一个使用高度进行计算的方法。将属性高度传递给方法是否更好,或者传递完整对象并使用getter来检索高度值是否更好。我希望这是有道理的。
e.g。
public getHeightInMeters(Object object) {
return object.getHeight()*x;
}
是相同的,更糟糕的,更好的?
public getHeightInMeters(Height height) {
return height*x;
}
答案 0 :(得分:2)
第二个版本更好。我的签名不太复杂。由于getHeightInMeters()方法只需要高度值,因此您应该保持简单。
答案 1 :(得分:2)
第二个。 getHeightInMeters是否关心对象?如果没有,则不需要它。
所有它需要的是高度,所以你应该通过它。
答案 2 :(得分:2)
取决于。
如果您正在执行的操作在语义上与对象类型相关联,则传递该对象是有意义的。或者,如果您使用的是对象的多个属性。
如果操作是通用的,即它应用于整数而不是对象的特定属性,则只接受整数。
答案 3 :(得分:1)
第二个是最佳/ 正确方式。
最好传递属性高度,因为你打破了依赖关系。也就是说,如果你改变传入的对象,删除/重命名方法,你最终会有巨大的头痛。
此外,如果您只是传递属性高度,您将始终知道进入的内容和出现的内容。
答案 4 :(得分:0)
仅传递高度信息所需的开销比整个对象少,因为每次序列化的数据较少。对于一个小应用程序,它没有任何区别,但随着您的扩展,您将产生更大的开销。
如果这是您需要的唯一属性,那么这是更好的选择。
答案 5 :(得分:0)
class Person {
private double height;
public void setHeight(double height){
this.height = height;
}
public double getHeight(){
return height;
}
}
惯例可能是此类的高度以米为单位。 但您可以为其他指标创建一些转换
public class Converter{
public static double convertFromMeterToInch(double meters){
return meters * 'some factor you get from net'
}
public static double convertFromInchtoMeter(double inch){
return ....
}
}
答案 6 :(得分:0)
这通常取决于:
如果您使用的是对象的多个属性,则第一个解决方案比添加更多参数更好。这也意味着如果操作仅与对象相关,否则使用第二种形式,如果这只是一些可以在其他对象上执行的原子操作。
另外一件事get
前缀应该通常用于类成员,在这种情况下,它接口就像只运行一些常量和外部值。我们不是它的单位。更好的命名是例如pixelsToMetters(int pixel)
,在这种情况下我们知道两个单位。
答案 7 :(得分:0)
因为getXXXX()通常是访问器方法的命名约定,所以它将成为你的类的一部分,所以像这样就足够了:
public double getHeightInMeters() {
return this.height*x;
}
如果您需要一个纯粹的转换器,请以不同的方式命名并传递一个double,因为它对您传递的Object没有任何作用。这样,您也可以将此方法重用于任何其他上下文。
保持简单!