当前位置: 首页 > news >正文

01.如何用DDD重构老项目

学习资料来源:DDD独家秘籍视频合集 https://space.bilibili.com/24690212/channel/collectiondetail?sid=1940048&ctype=0

文章目录

  • 动机
  • DDD与重构
  • 实践
    • 重构? 重写
    • 从一开始就采用DDD
    • 重构步骤
      • 1. 添加领域模块
      • 2.分离出有价值的代码
      • 3.迁移到领域模块
      • 4.重复2,3

动机

  • 为了程序员的理想? 为了商业利益?
  • 通过重构老项目来学习DDD并不合适。DDD应该是项目一开始就使用DDD,而不是用它来做重构。
  • 考虑投入产出,收益不高不做。死代码,没有新的需求来了,没必要重构;或者去先做其他更收益更高的事情
  • 得到各方支持,测试、产品、领导。不要私自做,难以坚持下去。

如果你是打工的,代码是公司的,不是你自己的。哪怕是座屎山,也不要轻易重构或DDD改造,屎山也能带来商业价值。改造能对屎山代码起到很好效果的几乎没有。

DDD与重构

  • DDD和重构不存在直接关系。DDD不是指导重构的方法论,重构也不需要DDD的指导。一个完全不懂DDD的人,也可做重构。
  • 实践DDD最好不要从重构开始。DDD最核心的部分是从问题域出发,设计出领域模型,再将模型落地为代码。但是重构不是从问题域出发的,而是从老代码出发的。
  • DDD架构风格可以成为重构的目标
  • 如果老项目本来就是用DDD做的,可以通过重构不断改进DDD代码。

实践

重构? 重写

首先要搞明白,是要做重构还是重写。
重构是不改变功能,逐步改进代码,量变引起质变。增量改变,风险更小。
重写是抛弃老代码,完全写一份新的,往往是一次性完成的。重写风险更大,一般不建议采用。
不管是重构还是重写,都应该用测试驱动开发保驾护航。如果原有代码确少测试用例,首先要补充自动化的测试用例。单元测试、集成测试、接口测试等等。然后再重构,如果只靠人力,很可能会失败。

从一开始就采用DDD

如果是新项目或者新需求,目前这个年代,使用DDD成本并不高。如果一开始不是DDD,后期重构成本更高。

重构步骤

1. 添加领域模块

在这里插入图片描述
这里的领域模块,就是业务核心模块,六边形架构里边所说的核心。刚建出来这个模块可能是空的,具体表现如在Java项目中可能是个jar包。

2.分离出有价值的代码

在这里插入图片描述
不可能一下子把老代码都用DDD改造。把最有价值的模块分离,并定义接口,老代码使用接口,待分离模块实现接口。接口把功能的使用方和实现方隔离开来,接口到后边不再变化,代表了老代码和分离模块之间的协议。

3.迁移到领域模块

在这里插入图片描述

4.重复2,3

重复步骤2,3,分离出有价值的模块,直到你觉得没有有价值的模块需要移动。


http://www.mrgr.cn/news/61375.html

相关文章:

  • 解决 Git SSL 连接错误:OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno
  • 深度学习第三弹:python入门与线性表示代码
  • js基础---座位选择案例分析
  • 算法练习6——统计大写英文字母的个数
  • Python的pandas库基础知识(超详细教学)
  • 信创国产数据库:崛起与创新的力量
  • pyav保存视频
  • 数据库基础介绍
  • 【C++初阶】模版入门看这一篇就够了
  • 【p2p、分布式,区块链笔记 Torrent】WebTorrent的上传和下载界面
  • 抽象类和接口的区别
  • PostgreSQL数据类型怎么选?
  • LiNo论文解析
  • 【每日刷题】Day145
  • 架构师备考-背诵精华(计算机语言)
  • Java Lock Condition 源码
  • 代码质量与项目进度的博弈
  • Homework 1 - Random Distribution Related
  • 手写ioc容器(简易版)
  • 【jvm】如何设置堆内存大小
  • 事务学习一
  • 年薪百万打工人自爆:我的大厂生存指南!
  • 使用DeepLabV3实现植叶病害检测
  • File类踩坑记录
  • 细胞核荧光探针(一):一种红色发光、NADPH响应的的喹啉基
  • 【点云异常点检测数据集】Real3D-AD数据集介绍