关于一次领域开发的复盘

简介: 既然是实际线下业务的开发,不要以为业务实现简单就不分析做概要设计,因为你无法预知市场的变动是不是如你想象的简单。有时候前期的设计不是为了本次的开发,而是为了下一次需求变更迭代的风险工时评估。

DDD领域设计的好处不是个人认知而是众所周知:统一业务概念促进业务建模、驱动微服务架构、增加代码服务率可读性等等。之前用DDD做过一个商城商品管理的后端开发。曾经因为变更需求推翻过初期的实现,想想也是心塞。复盘一下,加深以下对领域设计的认知,也避免出现同样的瞬时认知误差导致操作失误。
原始确认下来的对商品管理以及库存管理的认知,是以下图的黑色字体部分。商品部分无非就是基础信息的管理以及状态管理;而库存管理就是要注意的处理入库、出库、预占、流水还要注意以下并发操作。so easy,不用分析画图了,就两个简单域,建库,开发。
然而过了一周后,实现了一半后,“甲方”说我的商品有很多销售条件啊,属性啊,层次级别啊......要放在商品信息中。【附:以下图的红色部分就是改动】经过一番理论,这些东西属于商品域的被确认下来,我顿时一脸懵圈。WHAT......开发时间用掉一半的我有点紧迫感,基于这些东西属于商品域 开始胡思乱想了(其实要放在商品信息中这句话挺误导的)。开始对商品进行拆表,重新分析库存还是当初我认识的那个库存吗(因为销售属性的加入,商品上下架状态移到了库存上面)。数据库结构一变,思维惯式开始觉得以前的设计都是错的,要推翻重写。就像新增商品,就不是新增商品基础属性,还要新增销售属性(其实这时候已经让领域能力层和应用层腐蚀掉了)。其实,如果当时有时间把图画一画分析一下,会发现,其实商品基础信息还是那些基础信息,而销售属性,他们是属于商品域下的另外一个子域,而完整的商品,是几个子域的聚合,这个聚合就是一个业务商品的概念。代码根本不用推翻,要重新思考的增加应用服务的业务线。
image
总结一下tips避免再次踩坑To myself把:
(1)既然是实际线下业务的开发,不要以为业务实现简单就不分析做概要设计,因为你无法预知市场的变动是不是如你想象的简单。有时候前期的设计不是为了本次的开发,而是为了下一次需求变更迭代会议的风险评估和工时预测。
(2)开始开发了,就要确保领域不被侵入,或者说领域边界逐渐模糊。像上面加入的商品销售属性,他是商品域的,但是他区分于基础信息子域,他跟其他子域合做才能构成一个完整的业务概念。不要模糊。
(3)讨论需求变更的时候忌抓住一个观点变是非,忌思维定势,可以转变一下观念,比如认知我们的都没错,是边界都模糊了吗?
(4)此外,多表分页查询除了hibernate、mybatis写多表关联查询语句、以及前端异步请求信息外[/思考]还有啥攻略

目录
相关文章
|
2月前
|
安全 测试技术
测试团队的一次复盘实践
测试团队的一次复盘实践
142 0
|
13天前
|
运维 监控 安全
如何写复盘报告
该内容是关于IT公司中复盘报告的撰写指南,主要包括五个步骤:1) 还原故障基本信息,如定级参考;2) 描述处理过程,按时间顺序列出关键点;3) 评估影响范围,可能涉及业务基线;4) 确定故障原因,从直接原因到根本原因层层分析;5) 分析责任归属和事件级别。复盘还包括故障回顾,提出优化措施以减少重演。内容还提到了一些参考资料,用于深入学习稳定性保障。
11 0
|
2月前
|
缓存 前端开发 JavaScript
前端项目重构的一些思考和复盘
前端项目重构的一些思考和复盘
50 1
|
2月前
|
安全 测试技术
面试题2:测试人员何时参与需求分析,并且要分析需求的哪些方面?
面试题2:测试人员何时参与需求分析,并且要分析需求的哪些方面?
面试题2:测试人员何时参与需求分析,并且要分析需求的哪些方面?
|
2月前
|
测试技术
如何做需求评审?
如何做需求评审?
|
8月前
|
前端开发 C++
浅谈复盘的道法术器
人的经历太有限了,如果凡事都要自己经历过才能有所领悟,这样的效率太低。丹麦一位哲学家克尔凯郭尔曾说过:人生需要回望才能理解。对于一个组织、一家企业也是如此。复盘是我们突破经历限制,从过往挖掘提升的一个有效方式。因工作契机,前段时间对复盘进行了系统性的研究和升级。期间查阅了大量资料、书籍,也和一些专家做了交流,总结道法术器4个层面的关键点,希望对你有所帮助。1、你是不是也遇到过这类问题?实际复盘的效
193 0
浅谈复盘的道法术器
|
前端开发 jenkins 测试技术
自动化测试技术笔记(一):前期调研怎么做
虽然说自动化测试比较偏技术工作,但在开展前,明确你的工作目标和KPI也是不可忽视的一点。并不是说技术优秀就可以拿到好的绩效,企业生存第一法则是先活下来做产出,再考虑锦上添花和技术优化的事。
|
关系型数据库 MySQL 中间件
|
监控 数据可视化 Java
测试工程师如何做到初级测试管理(个人思考)?
测试工程师如何做到初级测试管理(个人思考)?
98 0
测试工程师如何做到初级测试管理(个人思考)?
|
SQL 数据可视化 Cloud Native
都说复盘能力很重要,如何复盘更有效?Superset你值得看看~
今天向大家介绍的是一款非常好用的数据分析可视化平台Superset,有了它我们可以做非常优雅的进行数据探索分析,搭建一目了然的可视化平台。
169 0
都说复盘能力很重要,如何复盘更有效?Superset你值得看看~