在同一个类的其他方法中使用get方法的Java约定是什么?

时间:2013-01-24 04:18:17

标签: java coding-style convention

在java类中编写get方法之后,在同一个类或变量本身中使用get方法会更好吗?

例如:

if(a.getWidth()>this.getWidth())

或:

if(a.getWidth()>this.width)

如果我应该使用this.anything那么多我也很困惑。在将相同类型的对象相互比较时,读起来似乎更容易。

6 个答案:

答案 0 :(得分:3)

  

最好在同一个类或变量中使用get方法   本身?

恕我直言使用变量。访问器方法主要用于其他对象。

  

如果我应该使用this.anything那么多我也很困惑。它   在比较相同类型的对象时,它们似乎更容易阅读   其他

显式使用this引用并不需要总是。它主要用于可读性,就像你说的那样。

答案 1 :(得分:3)

我认为使用getter方法对于可持续性更好。考虑Null Object pattern,实现这一目标的方法是:

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评论),当您使用继承时,可以重写方法以更好地表示目标对象。

答案 2 :(得分:2)

1)从类中可以看出,使用field和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来提高可读性,因为IDE会将this标记为不同的颜色

答案 3 :(得分:0)

除非您有一个参数与字段同名的情况(例如在构造函数中),否则不必使用它。

对于访问属性,从长远来看使用公共getter可能是有益的,因为您可能希望向属性添加某种形式的处理,如果您在任何地方使用getter,您只需要进行一次更改

答案 4 :(得分:0)

如果你的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 
}

答案 5 :(得分:0)

您可以使用访问者或变量本身,这是个人偏好之一。

有些人喜欢自己使用变量,因为你没有调用函数的开销。但是,如果你对变量的值有任何限制,有时只使用你的访问器和变换器就更清晰;特别是如果你要进行子类化。但它可以采取任何一种方式。

我喜欢使用this关键字的方式是,我总是将它用于实例变量。我发现它使代码更容易阅读,因为您可以直观地确定使用实例变量的位置以及使用局部变量的位置。再一次,这是个人偏好的事情。

主要是确保您的代码干净,可读。此外,请确保您遵循组织正在使用的任何编码标准,并确保一致。