1、尽量使用DP,将隐型概念显性化;

2、将数据校验、错误处理、属于该DP的行为放到DP创建中;

3、抽象Entity,Entity中包含了数据和行为;

4、抽象第三方服务;

5、抽象中间件;

6、封装业务逻辑,使用DP封装跟Entity无关的无状态计算逻辑,使用Entity封装单对象的有状态行为;

7、使用Domain Service封装多对象逻辑;

8、Entity和数据模型不需要完全一致,且尽量使用DP;

9、Repository接口名称不要使用底层实现的语法,操作Entity对象,不操作底层DO;

10、Aggregate Root的Repository采用Snapshot的方案,保留子Entity的修改状态,避免全部子Entity的更新(可能会带来数据不一致问题,要加入乐观锁);

11、Entity创建使用constructor或者factory,并做参数强校验;

12、Entity尽量避免public setter;

13、Aggregate Root中的子Entity只能通过聚合根保证子的一致性;

14、Entity不可以强依赖其他Entity或者Domain Service;

15、Entity的行为只能影响本Entity;

16、Domain Service包含三种形式:单对象策略型(通过方法入参传入领域服务)、跨对象事务型、通用组件型。

17、使用策略模式封装领域规则;

18、使用领域事件显性化领域里其他Entity的变化;

19、Interface层的Http和RPC接口,返回值为Result,捕捉所有异常;Application层的所有接口返回值为DTO,不负责处理异常;

20、一个Interface层的类应该是“小而美”的,应该是面向“一个单一的业务”或“一类同样需求的业务”,需要尽量避免用同一个类承接不同类型业务的需求;

21、ApplicationService的接口入参只能是一个Command、Query或Event对象,CQE对象需要能代表当前方法的语意;

22、CQE对象的校验应该前置,避免在ApplicationService里做参数的校验;

23、针对于不同语意的指令,要避免CQE对象的复用,比如新增和更新;

24、Application层、Domain层以及Infrastructure层遇到错误直接抛异常,Interface层统一捕捉异常避免异常堆栈信息泄露到API之外;

DDD优秀实践及总结——规范总结相关推荐

  1. 3 需求工程优秀实践

    3.1需求开发过程框架 需求工程包括获取.分析.规范说明和验证.但不能只是简单以一种一次性线性顺序来实施这些实践.实际上,这些活动是相互交织.渐进的和迭代式的,如下图所示. "逐步完善细节& ...

  2. 分布式缓存的25个优秀实践与线上案例 done

    杨彪,蚂蚁金服技术专家,<分布式服务架构:原理.设计与实战>和<可伸缩服务架构:框架与中间件>作者.近10年互联网和游戏行业工作经验. 本文节选自即将出版的<可伸缩服务架 ...

  3. 针对自动化测试的23种Node.js优秀实践

    如果您是一名开发者,那么对Node.js一定不陌生.由Node.js提供的各种优秀实践,可以方便您大幅地提高应用的性能.而在JavaScript的支持下,Node.js可以运行在服务器上,以方便开发人 ...

  4. 修炼成高薪Java程序猿——从优秀的Java命名规范开始

    优秀的Java命名规范 1命名规范 1.1 package (*)  包名全部由小写的ASCII字母组成,用"."分隔.  在此项目中,所有的包均以"com.proste ...

  5. COLA 4.x和DDD项目实践精粹

    在<COLA 4.x架构入门和项目实践>专栏基础之上,对项目开发实践进行了提炼和总结:同时,针对其中的一些知识点进行扩展和延伸. 专栏介绍 领域驱动设计(Domain Driven Des ...

  6. 代码走查优秀实践集合

    公司内部人员总结的,感觉很有成效,分享一下: 代码走查优秀实践集合 轰轰烈烈的代码质量竞赛结束了,各产品部陆陆续续开展了代码走查交流会,会上各位组长或代码走查负责人分享了优秀的实践,也提出了各式各样的 ...

  7. 您遵循过这些Jenkins优秀实践吗?

    一.时刻保持Jenkins的安全 在默认配置情况下,Jenkins是不执行任何安全检查的.也就是说,除一些简单基本的Jenkins配置.作业和构建,网站的访问者几乎可以在Jenkins的主数据库中执行 ...

  8. 第六十二期:腾讯云发布“小程序·云开发十大优秀实践”:猫眼、唯品会等入选

    作者:周小白 [TechWeb]10 月 19 日消息,今日,腾讯云首次对外公布了"小程序·云开发十大优秀实践",包括白鹭引擎.千墨科技.腾讯新闻.即速应用.微盟.唯品会.猫眼.香 ...

  9. 腾讯云发布“小程序·云开发十大优秀实践”,猫眼、唯品会、香格里拉等入选

    10月19日,腾讯云联合微信小程序团队举办"小程序·云开发"技术峰会.会上,腾讯云首次对外公布了"小程序·云开发十大优秀实践", 包括白鹭引擎.千墨科技.腾讯新 ...

最新文章

  1. 什么是新IP的四层网络技术
  2. ImportError: cannot import name ‘DtypeArg‘ from ‘pandas
  3. 学python买什么书好-python官方推荐30本面向初学者的书籍!你看过几本?
  4. 回过头来看对象的四种状态强软弱虚引用的理解
  5. 软考-信息系统项目管理师-战略管理
  6. hdu5399(模拟)
  7. Codeforces - 961E Tufurama
  8. 泉州经贸职业技术学院计算机系,部门简介-泉州经贸职业技术学院网络电教中心...
  9. [转]unity3D游戏开发之GUI
  10. 匿名提问:rm -rf了怎么办?
  11. POJ 2044 Weather Forecast
  12. Spark Scala当中reduceByKey的用法
  13. PHP学习总结(10)——PHP入门篇之自定义网站根目录
  14. LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal
  15. 文件名lin.php是什么,Linsexu程序安装PHP详细软件教程
  16. HttpServletRequest中文乱码
  17. 详解animate.css动画插件用法
  18. Atitit rest框架选型总结 Resteasy 实现 但是麻烦 作为JAX-RS的标准实现,RestEasy还具有以下亮点特性:   1)不需要配置文件,只要把JARs文件放到类路径里面
  19. ida pro6.4 linux安装使用
  20. 「Golang」sync.Once用法以及源码讲解

热门文章

  1. 《网络是怎样连接的》读书笔记
  2. 基于51单片机的教室智能照明控制设计
  3. python汉字拼音首字母_python获_取一组汉字拼音首字母的方法
  4. 【ELT.ZIP】OpenHarmony啃论文俱乐部——综述视角解读压缩编码
  5. 又涨了?程序员9月平均薪资,高薪还能持续多久?
  6. 红蓝对抗之蓝队防守:ATTCK框架的应用
  7. 百度地图,读取后台值,获取地点坐标
  8. 质感微立体年终汇报PPT-朴尔PPT
  9. 中国风企业年度总结汇报PPT模板
  10. 简约小清新企业绩效管理培训PPT模板