有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java始终使用访问器方法是最佳实践吗,即使在访问本地状态时也是如此?

考虑以下类:

public class Person 
{
private Integer age;

// Standard Accessors
public Integer getAge() {
    return age;
}

public void setAge(Integer age) {
    this.age = age;
}

public String getAgeAsTextString()
{
    if (this.age == 20)
    {
        return "Twenty";
    }
    return "Unknown";
}
}

我只有1个整数和2个访问器。如果我想创建一个以字符串形式返回对象状态的实用程序方法,那么最好将类变量引用为this.age,还是使用getAge()

是否有一个最佳实践,或者这是由于开发人员的随意性


共 (6) 个答案

  1. # 1 楼答案

    视情况而定。对于访问器不执行任何操作的小型快速类,我会说直接使用字段。对于访问器和setter可能有副作用的较大类,我会说使用访问器

    在安卓平台上,安卓文档似乎是一致的。在某些情况下,他们甚至建议提供包级保护。请参阅http://developer.android.com/guide/practices/design/performance.html中标题为“避免内部getter/setter”和“将包作用域与内部类一起使用”的部分

    这一切都取决于环境、代码的大小,以及是否有出于代码维护原因而商定的“标准”。只需知道性能上存在一些微小的差异,但最终取决于开发人员/团队

  2. # 2 楼答案

    即使对于简单的类,我也喜欢使用getter和setter,因为它会在代码中创建“钩子”,从而易于扩展。因此,如果您想在用户每次更改某个对象属性时创建审核条目,这很容易做到。然后,当我的项目结束时,我将花一点时间删除我没有使用的getter和setter。我觉得这很有效,因为大多数IDE都会为您生成访问器,所以不会浪费太多时间

    我看到有人发帖说,“如果你以后想更改它,你总是可以这样做的。”。在大型项目中,当您在整个代码中直接访问对象属性时,这并不总是微不足道的

  3. # 3 楼答案

    这是一个很好的做法,因为你永远无法确定你希望在以后的日子里年龄会发生怎样的变化。它可能需要某种验证或其他东西,在一种方法中更改它比在使用该字段的任何地方都要容易(而且很容易错过它使用的地方,因此很难跟踪潜在的错误)

  4. # 4 楼答案

    我认为这取决于开发者的判断力

    我稍微喜欢使用getter方法。如果您有一个类层次结构,那么最好通过受保护的getter公开内部状态

  5. # 5 楼答案

    如果你的类是最终类,我会直接访问字段。信任你的重构能力。如果你以后想改变它,你总是可以做的

  6. # 6 楼答案

    看在上帝的份上,不要用矛盾的“自我封装”把你的代码搞乱。该类是您的模块。让你的课变得简单

    另外,根据行为而不是数据来设计类的接口。放弃那些get和set方法