在DTO中将相同变量用于两个目的是不好的做法

时间:2016-10-28 10:22:17

标签: java jersey jackson dto

@JsonRootName(value = "studentInfo")
@JsonInclude(value = Include.NON_EMPTY)
public class StudentInfo {
    private String student;
    @JsonProperty("address")
    private String address;

    @JsonProperty("studentName")
    public String getStudent() {
        return student;
    }

    @JsonProperty("studentUserId")
    public void setStudent(String student) {
        this.student = student;
    }
    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

这是我的Student课程我在学生相关的API中使用此对象作为DTO。 在这里,我使用了学生String变量,这样当调用POST/PUT/ API并传递studentUserId时,它将被设置为student String变量,但每当StudentInfo对象作为Response Entity返回时,它将返回存储在用户表中的学生的实际名称。

我只是想知道,我使用学生字符串变量和@JsonProperty的方式,是正确的使用方法还是错误的做法?

1 个答案:

答案 0 :(得分:4)

不仅是DTO的规则,而且是所有课程,程序和语言(基本上在真正的非学术生活中),在编程时,每个变量和属性都有它'自己的目的,仅用于此

如果您遵循此规则,您还将遵循以下约定:

  • 命名(每个变量都有一个描述性和唯一的名称)
  • 可读性(不仅是您,其他人也会看到并了解每个变量的用途)
  • 可维护性(当某些内容发生变化 - 并且时,它会发生变化 - ,您不会需要分割或制作uglies改变或解决问题的解决方法)
  • 可测试性如果字段的语义取决于其使用的上下文,则为类编写测试是一场噩梦。(@Fildor

还有一些人。无论如何,这只是约定而不是强制性规则,语法会令人困惑但是正确,因此您可以使用它。我的建议是:不要! ;)