在java类中编写get方法后,是在同一个类中使用get方法还是变量本身更好?
例如:
if(a.getWidth()>this.getWidth())
或者:
if(a.getWidth()>this.width)
如果我应该使用 this.anything 这么多,我也很困惑。将相同类型的对象相互比较时似乎更容易阅读。
在java类中编写get方法后,是在同一个类中使用get方法还是变量本身更好?
例如:
if(a.getWidth()>this.getWidth())
或者:
if(a.getWidth()>this.width)
如果我应该使用 this.anything 这么多,我也很困惑。将相同类型的对象相互比较时似乎更容易阅读。
在同一个类中使用get方法还是变量本身更好?
恕我直言,使用该变量。访问器方法主要供其他对象使用。
如果我应该使用 this.anything 这么多,我也很困惑。将相同类型的对象相互比较时似乎更容易阅读。
您并不总是需要显式地使用this
参考。它主要用于可读性,就像您说的那样。
我认为使用 getter 方法对可维护性更好。考虑Null Object 模式,一种方法是通过以下方式实现:
public String getName(){
if (this.name == null){
this.name = "";
}
return this.name;
}
这应该可以避免您在使用变量之前检查大量空值。
public boolean isCorrect(){
if(this.name != null && this.name.isEmpty()){
//The null check up is boilerplate code
return false;
}else{
return true;
}
}
我宁愿这样写:
public boolean isCorrect(){
if(this.getName().isEmpty()){
//The null check up is boilerplate code
return false;
}else{
return true;
}
}
当然,这取决于你是否采用这种模式。
还要考虑你有
double width;
double height;
public double getWidth(){
return this.width;
}
但是在某些时候,您决定为一个类更改它,但仍然有方法,这样您的程序就不会崩溃。
Dimension dimension;
public double getWidth(){
return this.getDimension().getWidth();
}
// etc...
最后(正如 MadProgrammer 所评论的),当您使用继承时,可以重写方法以更好地表示预期的对象。
1) 从类内部看来,使用字段和 getter 之间没有区别,但是如果 getter 被子类覆盖怎么办?
class A {
String name;
String address;
String getName() {
return name;
}
String getAddress() {
return address;
}
String getDescription() {
return name + " " + address;
}
}
class B extends A {
String country;
@Override
String getAddress() {
return super.getAddress() + ", " + country;
}
}
B.getDescription() 应该返回一个扩展地址,但它不会。如果 A.getDescription() 被实现为
return getName() + " " + getAddress();
2)我个人不使用this
可读性,因为 IDEthis
用不同的颜色标记
除非您遇到参数与字段同名的情况(例如在构造函数中),否则不需要使用 this。
对于访问属性,从长远来看,使用公共 getter 可能是有益的,因为您可能希望向属性添加某种形式的处理,并且如果您在任何地方都使用 getter,则只需进行一次更改。
如果您的 get 方法返回具有某种格式的数据,则必须使用 get 方法,否则,变量本身就可以使用。
仅当您的方法参数与您的成员变量相同时才需要这样做,否则,这不是强制性的。
例如:
private String str;
public void setString(String str){
this.str = str; // here this.str is necessary because this represents the memeber variable
}
public String getString(){
return this.str; // here this is optional and you can simply omit it
}
您可以使用访问器或变量本身,这是个人喜好之一。
有些人喜欢使用变量本身,因为您没有调用函数的开销。但是,如果您对变量的值有任何限制,有时只使用访问器和修改器会更干净;特别是如果您要进行子类化。但它是可以去任何一种方式的事情之一。
我喜欢使用this
关键字的方式是,我总是将它用于实例变量。我发现它使代码更易于阅读,因为您可以直观地确定在哪里使用实例变量,以及在哪里使用局部变量。同样,这是个人喜好。
最重要的是确保你的代码干净、可读。此外,请确保您遵循组织使用的任何编码标准,并确保保持一致。