加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

重构 – “数据类”真的是一个代码气味吗?

发布时间:2020-12-14 00:48:08 所属栏目:百科 来源:网络整理
导读:福勒的书 Refactoring将“数据类”列为代码气味.然而,当单元测试方法时,传递价值对象,例如数据传输对象,使测试比尝试设置或检查类中的状态容易得多. 它引起了我的注意,测试驱动开发方法依赖于这样的想法:易于编写的测试表明界面清洁,方法是一致的.纯粹的幂
福勒的书 Refactoring将“数据类”列为代码气味.然而,当单元测试方法时,传递价值对象,例如数据传输对象,使测试比尝试设置或检查类中的状态容易得多.

它引起了我的注意,测试驱动开发方法依赖于这样的想法:易于编写的测试表明界面清洁,方法是一致的.纯粹的幂等方法是最容易测试的,最简单的重用.那么为什么一个数据类是坏事呢?推荐的修复是将行为移动到数据类中,但是为什么值对象需要行为?

我不认为数据类与值对象相同.价值对象通常是不变的,如长度或金钱.福勒所指的“数据类”看起来像贫血域模型 – 即吸烟者和杀手的袋子.

因此,将值对象传递给方法,但绝对不是贫血域模型是可以的.那是因为这种方法会对多种事物产生不利影响,而且很可能违反了单一的责任模式.

不可修改的数据类的情况:

在这种情况下,我建议有一个映射器层将共享实体映射到富域模型,反之亦然.您的代码将主要处理丰富的域名模型.这个想法不是用太多的业务逻辑来过度负担服务类,因为这对代码重用和可测试性是不利的.当然,设计更是一种艺术 – 而不仅仅是黑色和白色.如你所说,数据类是DTO或共享的不可修改的实体不可或缺的.但是,一个强大的域驱动设计可以节省时间地使用这些设计,并尽可能减少代码库的脚印.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读