通过 return 值更改字段与通过在方法中引用它们来更改字段?
Altering fields via return values vs. altering fields by referencing them within methods?
假设我有一个私有整数 x 作为 class 示例中的一个字段,我想将这个整数设置为 1。目前我有两种方法可以做到这一点:
//Choice 1
public class Example{
private int x;
// Class Constructor
public Example(){
x = setX();
}
private int setX(){
return 1;
}
}
//Choice 2
public class Example{
private int x;
// Class Constructor
public Example(){
setX();
}
private void setX(){
x = 1;
}
}
我想知道哪种方式在 space 和时间方面是最佳的,或者它是否重要。如果差异可以忽略不计,哪种方式是最佳做法?
同理,当我想要一个方法使用 class 字段时,是将该字段作为参数传递还是仅在方法中引用它更好?
关于你问题的最后一部分:对象的方法可以访问对象的状态。将其作为参数传递是不必要的。
关于第一部分:你展示的备选方案最大的问题并不是真正选择哪个。最大的问题是命名。
一个名为 setX()
的方法需要设置 x 的值。 Java 开发人员会期望这样的 setter 接受参数。一个叫做 setX()
的方法除了 returns 之外什么都不设置,一个计算值应该被称为 getSomeValue()
或 computeSomeValue()
。
假设我有一个私有整数 x 作为 class 示例中的一个字段,我想将这个整数设置为 1。目前我有两种方法可以做到这一点:
//Choice 1
public class Example{
private int x;
// Class Constructor
public Example(){
x = setX();
}
private int setX(){
return 1;
}
}
//Choice 2
public class Example{
private int x;
// Class Constructor
public Example(){
setX();
}
private void setX(){
x = 1;
}
}
我想知道哪种方式在 space 和时间方面是最佳的,或者它是否重要。如果差异可以忽略不计,哪种方式是最佳做法?
同理,当我想要一个方法使用 class 字段时,是将该字段作为参数传递还是仅在方法中引用它更好?
关于你问题的最后一部分:对象的方法可以访问对象的状态。将其作为参数传递是不必要的。
关于第一部分:你展示的备选方案最大的问题并不是真正选择哪个。最大的问题是命名。
一个名为 setX()
的方法需要设置 x 的值。 Java 开发人员会期望这样的 setter 接受参数。一个叫做 setX()
的方法除了 returns 之外什么都不设置,一个计算值应该被称为 getSomeValue()
或 computeSomeValue()
。