繁体   English   中英

值得在DTO中使用getter和setter吗? (C ++)

[英]Worth using getters and setters in DTOs? (C++)

我必须编写一堆DTO(数据传输对象),它们的唯一目的是在客户端应用程序和服务器应用程序之间传输数据,因此它们具有一堆属性,一个序列化功能和一个反序列化功能。

当我看过DTO时,他们经常会有getter和setter,但是对于这类课程,他们有什么意义吗? 我确实想知道是否要在方法中进行验证或进行计算,但是我可能没有考虑,因为这似乎超出了它们的用途范围。

在服务器端,业务层处理逻辑,而在客户端,DTO将仅用于视图模型(并将数据发送到服务器)。

假设我正确地处理了所有这些问题,人们会怎么想?

谢谢!

编辑:并且如果是这样,将get / set实现放入类定义中会不会有问题? 将重复的内容保存在cpp文件中...

如果您有一个类的明确目的只是要将其成员变量存储在一个地方,则最好将它们全部公开。

该对象可能不需要析构函数(仅在需要清理资源(例如指针)的情况下才需要析构函数,但是如果要序列化指针,则只是在问麻烦)。 有一些语法糖构造函数可能很不错,但实际上没有必要。

如果数据只是用于携带数据的普通旧数据(POD)对象,则它是结构(完全公共类)的候选对象。

但是,根据您的设计,您可能需要考虑添加一些行为,例如.action()方法,该行为知道如何将其承载的数据集成到实际的Model对象中。 而不是让实际模型本身集成这些更改。 实际上,可以将DTO视为控制器(输入)的一部分,而不是模型(数据)的一部分。

在任何情况下,无论哪种语言,吸气剂/装填剂都是封装不良的标志。 每个实例字段都具有一个getter / setter方法不是OOP。 对象应该丰富,而不是Anemic 如果您确实需要一个贫血对象,则跳过获取/设置程序,直接进入POD完全公共结构; 与完全公开的结构相比,使用getter / setter几乎没有好处,除了它会使代码复杂化,因此,如果您的工作场所使用代码行作为生产力指标,它可能会给您更高的评价。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM