首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >让我的getter方法更改存储值是不是一种糟糕的做法?

让我的getter方法更改存储值是不是一种糟糕的做法?
EN

Stack Overflow用户
提问于 2012-12-14 17:41:55
回答 10查看 7.1K关注 0票数 70

在我的类中更改像版本2这样的getter方法是不是不好的做法?

版本1:

代码语言:javascript
复制
 public String getMyValue(){
     return this.myValue
 }

版本2:

代码语言:javascript
复制
 public String getMyValue(){

    if(this.myValue == null || this.myValue.isEmpty()){
       this.myValue = "N/A";
    }

    return this.myValue;
 }
EN

回答 10

Stack Overflow用户

发布于 2012-12-14 17:50:26

在我看来,除非您正在执行lazy-loading (在这种情况下您并不是这样),否则getters不应该更改该值。所以我要么:

将更改放入setter中

代码语言:javascript
复制
public void setMyValue(String value) {
    if(value == null || value.isEmpty()){
        this.myValue = "N/A";
    } else {
        this.myValue = value;
    }
}

或者,如果value设置不正确,则让getter返回默认值:

代码语言:javascript
复制
public String getMyValue() {
    if(this.myvalue == null || this.myvalue.isEmpty()){
        return "N/A";
    }    
    return this.myValue;
}

在延迟加载的情况下,我会说在getter中更改成员是可以的,您可以这样做:

代码语言:javascript
复制
public String getMyValue() {
    if (this.myvalue == null) {
        this.myvalue = loadMyValue();
    }    
    return this.myValue;
}
票数 38
EN

Stack Overflow用户

发布于 2012-12-14 22:53:27

不是的。您在这里做了两件事。获取和设置。

票数 11
EN

Stack Overflow用户

发布于 2012-12-15 01:48:11

我通常定义一个特定的getter

切勿更改原始getter

代码语言:javascript
复制
 public String getMyValue(){
     return this.myValue
 }

并创建特定的getter

代码语言:javascript
复制
public String getMyValueFormatted(){

    if(this.myvalue == null || this.myvalue.isEmpty()){
       return "N/A";
    }else{
       return this.myValue;
    }
 }
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13876066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档