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()
是否有一个最佳实践,或者这是由于开发人员的随意性
# 1 楼答案
视情况而定。对于访问器不执行任何操作的小型快速类,我会说直接使用字段。对于访问器和setter可能有副作用的较大类,我会说使用访问器
在安卓平台上,安卓文档似乎是一致的。在某些情况下,他们甚至建议提供包级保护。请参阅http://developer.android.com/guide/practices/design/performance.html中标题为“避免内部getter/setter”和“将包作用域与内部类一起使用”的部分
这一切都取决于环境、代码的大小,以及是否有出于代码维护原因而商定的“标准”。只需知道性能上存在一些微小的差异,但最终取决于开发人员/团队
# 2 楼答案
即使对于简单的类,我也喜欢使用getter和setter,因为它会在代码中创建“钩子”,从而易于扩展。因此,如果您想在用户每次更改某个对象属性时创建审核条目,这很容易做到。然后,当我的项目结束时,我将花一点时间删除我没有使用的getter和setter。我觉得这很有效,因为大多数IDE都会为您生成访问器,所以不会浪费太多时间
我看到有人发帖说,“如果你以后想更改它,你总是可以这样做的。”。在大型项目中,当您在整个代码中直接访问对象属性时,这并不总是微不足道的
# 3 楼答案
这是一个很好的做法,因为你永远无法确定你希望在以后的日子里年龄会发生怎样的变化。它可能需要某种验证或其他东西,在一种方法中更改它比在使用该字段的任何地方都要容易(而且很容易错过它使用的地方,因此很难跟踪潜在的错误)
# 4 楼答案
我认为这取决于开发者的判断力
我稍微喜欢使用getter方法。如果您有一个类层次结构,那么最好通过受保护的getter公开内部状态
# 5 楼答案
如果你的类是最终类,我会直接访问字段。信任你的重构能力。如果你以后想改变它,你总是可以做的
# 6 楼答案
看在上帝的份上,不要用矛盾的“自我封装”把你的代码搞乱。该类是您的模块。让你的课变得简单
另外,根据行为而不是数据来设计类的接口。放弃那些get和set方法