软件设计、DDD概念及落地时的一些零碎思考和记录2
主要是项目中一些落地经验和记录
技术人员、开发人员
- 大部分程序员真的不善于沟通,经常会显得很保守;
- 他们技术上的困惑、误解乃至郁闷都很难直接的表达清楚;
- 他们对自己的错误“印象”很深;
- 他们内心是希望提高、改进,出自各种目的,也包括为了轻松点或者“牛逼”点,这属于优点;
- ORM已经是一种现实的基础能力;
推进者
- 类似技术经理和技术组长这种直接面对程序员的职位必须有技术要求,如果发现他们不符合要求,需要警惕;
- 技术和设计理念的推进者必须有技术能力支持;
- 推进者无需成为心理专家,但要有从代码中发现问题的能力(并非bug,是员工在技术上存在的缺陷和问题或者原有技术栈的痛点);
- 在落地这个环节上,团队就是是需求方,程序员就是领域专家,请保持尊重并勇于面对;
- 尊重传统,团队中已有的名词如果没有重大冲突不要轻易变更,可以作为落地领域的领域语言基础;
- 推进的目的是效率和质量,团队外部的压力也通常来自这里,而团队内部还会有其他想法,需要考虑如何平衡内外,保持一定的弹性;
- 推进不能影响进度,分步推进,给团队一些消化时间;
- 如果不能说明新东西能解决的实际开发问题,不要推进;
- 推进者需要更多付出
- 如果失败,除非有着买彩票中大奖的运气,“奇葩成员的奇葩行为导致失败”不是理由;
- 自用系统是更好的切入点
从Application开始
- 名词不重要,有时接口服务之类的更容易被接受;
- 流程组装
大部分程序员对流程都很有概念,大部分客户对流程的进度都很感兴趣,然而很多情况下流程出于各种原因(能力、事务需求)会被藏在业务逻辑的处理之中或者被“顺手”处理了,很多时候组装甚至会发生在前端站点;
提供一个总览式的统一的流程组装位置,难度最低、最安全、最直观、最简单; - 事务时机
通常事务会发生在流程处理的某个或某几个环节上,所以在流程组装时提升事务处理时机就会变的比较自然; - 尽量满足前端站点的一些需求
前端的需求变化非常多,需求方对于需求变化有着自己的考虑, 很多时候他们会认为前端变化比较简单;
很多时候为了保证业务逻辑处理没有过大的变化,会“支付”一些前端需求;
有些需求变化实际上会涉及到一些流程节点(技术层面)的调整甚至流程的重新组装,这种是需要尽量满足的; - 流程组装能够消化一部分需求变化,事务时机能够引导程序员更好的思考存储;
- 即使不引入其他任何概念,一个结构良好的易读易用的日志系统是必须的;
业务逻辑 Domain
- IO类的处理尽量分离;
- 如果要处理历史宝藏,
if switch
哥俩好放最后; - 仓储对ORM的隔离不是必须的;
- 复用范围定在本项目之内;
- 如果你的项目已经复杂到需要隔离查询, 有可能的话拉一把;查询端也已经消化了一些需求了;
- 不要一个人处理
- 管理后台对业务线、某些写入需求应在此处理,注意区分与前端需求的异同;
- 时间、时刻,同步、异步
- 根据具体项目确定粒度原则
- 注意缓存
基础设施、框架
- 云端通常没有宣传的那么可靠;
- 网络永远都是问题;
- 监控是分布的头等大事;
- Redis这种功能多的容易被接受;
- 只要有合适的场景,MQ非常容易被接受;
- 稳定压倒一切;
- 数据需要清理;
- 框架以支持服务为主,限制性的东西不要多
- 安全
- 时间时钟
软件设计、DDD概念及落地时的一些零碎思考和记录2的更多相关文章
- 软件设计、DDD概念及落地时的一些零碎思考和记录
DDD理解 DDD体现的是对现实的充分尊重. 1.尊重业务现实,领域专家.领域语言等概念 2.尊重团队现实 3.尊重变化 Application 对某一业务线的整体掌控,流程组装,进度管理,存储时机掌 ...
- DDD学习笔录——领域驱动设计DDD概念总结
- 领域驱动设计(DDD)
领域驱动设计(DDD)实现之路 2004年,当Eric Evans的那本<领域驱动设计——软件核心复杂性应对之道>(后文简称<领域驱动设计>)出版时,我还在念高中,接触到领域驱 ...
- 战术设计DDD
可落地的DDD(5)-战术设计 摘要 本篇是DDD的战术篇,也就是关于领域事件.领域对象.聚合根.实体.值对象的讨论.也是DDD系列的完结篇.这一部分在我们团队争论最多的,也有很多月经贴,比如对资 ...
- 关于领域驱动设计 DDD(Domain-Driven Design)
以下旨在 理解DDD. 1. 什么是领域? 妈妈好是做母婴新零售的产品,应该属于电商平台,那么电商平台就是一个领域. 同一个领域的系统都有相同的核心业务. eg: 电商领域都有:商品浏览.购物 ...
- 分享我对领域驱动设计(DDD)的学习成果
本文内容提要: 1. 领域驱动设计之领域模型 2. 为什么建立一个领域模型是重要的 3. 领域通用语言(Ubiquitous Language) 4.将领域模型转换为代码实现的最佳实践 5. 领域建模 ...
- 领域驱动设计(DDD:Domain-Driven Design)
领域驱动设计(DDD:Domain-Driven Design) Eric Evans的"Domain-Driven Design领域驱动设计"简称DDD,Evans DDD是一套 ...
- 我对领域驱动设计(DDD)的学习成果
领域驱动设计之领域模型 2004年Eric Evans发表Domain-Driven Design – Tackling Complexity in the Heart of Software (领域 ...
- python 全栈开发,Day116(可迭代对象,type创建动态类,偏函数,面向对象的封装,获取外键数据,组合搜索,领域驱动设计(DDD))
昨日内容回顾 1. 三个类 ChangeList,封装列表页面需要的所有数据. StarkConfig,生成URL和视图对应关系 + 默认配置 AdminSite,用于保存 数据库类 和 处理该类的对 ...
随机推荐
- VS2008 试图运行未注册64位调试器组件
安装即可
- android踩坑记录之view.setVisiblity()
问题 在某次做悬浮侧边栏的时候,遇到了一个问题:我用windowManager创建的悬浮侧边栏.点击中心view展开菜单,再次点击则隐藏菜单,如此简单的一个需求,却遇到了奇怪的问题,我没有对view的 ...
- java基础知识文章汇总
将之前的所有关于Java基础知识的随笔,整理成质量较高的十几篇随笔,几乎是好几篇比较零散的随笔合成现在的一篇,自认为还不错. java基础(一) 深入解析基本类型 java基础(二) 自增自减与贪心规 ...
- Python+Selenium笔记(五):生成测试报告
#HTMLTestRunner代码修改参考 微微微笑 的说明,下面是链接,这个已经说的很详细了 https://www.cnblogs.com/miniren/p/5301081.html (一) 前 ...
- 使用vue脚手架(vue-cli)快速搭建项目
一.从最简单的环境搭建开始: 安装node.js,从node.js官网下载并安装node,安装过程很简单,一路“下一步”就可以了(傻瓜式安装).安装完成之后,打开命令行工具(win+r,然后输入cmd ...
- Oracle EBS AP取消核销
--取消核销 created by jenrry 20170425 DECLARE l_result BOOLEAN; l_msg_count NUMBER; l_result_n varchar2( ...
- 初识java内存区域
目录: 1.运行时数据区域 2.对象的创建 3.对象的内存布局 4.对象的访问定位 一.运行时数据区域 基本的java虚拟机运行时数据区如下图: 下面我们就来逐个认识这几个运行时的数据区域 1.程序计 ...
- C# 实现 JAVA AES加密解密[原创]
以下是网上普遍能收到的JAVA AES加密解密方法. 因为里面用到了KeyGenerator 和 SecureRandom,但是.NET 里面没有这2个类.无法使用安全随机数生成KEY. 我们在接收J ...
- LINUX使用extundelete进行数据恢复
从删库到跑路不是一句笑话,不小心误删除操作很容易造成整个公司业务崩溃.所以真的误删除了,第一时间就是赶紧停机,不要再进行任何写入操作,把这块磁盘挂载到其他机器进行数据恢复 这里我们介绍一下使用 LIN ...
- Cisco ASA 使用ASDM 配置管理口 方法
CISCO ASA防火墙ASDM安装和配置 准备一条串口线一边接台式机或笔记本一边接防火墙的CONSOLE 接口,通过CRT或者超级终端连接ASA在用ASDM图形管理界面之前须在串口下输入一些命令开启 ...