或许你已经有所耳闻,可能它早已是同事之间茶余饭后的谈资,也可能无意间听别人谈论过,或者技术论坛上见过它。有点儿茫然,也感觉到自己有些后知后觉,这玩意儿到底是什么?
2021年我第一次听到DDD,一度以为是某个技术框架,用于封装解决某些特定事物,更简易,更完善才会有人到处吹,到处讨论,类似于当年的Spring Boot。整好我们公司也在推广,感觉像架构师的KPI(有嫌疑~)。当然公司推广的,只管学就是了,毕竟技多不压身,花钱雇我学习,我很乐意。程序员这个职业,与修自行车的,颠大勺的,开挖掘机的,没什么本质区别,都是靠手艺吃饭,手艺好,就赚的多,亘古不变的道理。
回到正题,DDD其实是一种思想,一种指引,一个传统软件行业多年磨练出来的剑谱。所谓DDD,即 Domain Driver Design 领域 驱动 设计的简称。就跟CNMD是Chinese National Missile Defence 中国国家导弹系统一样。我习惯跟人讨论时说领域驱动设计,更能加深点儿印象。驱动这个词儿乍一看有些不太好理解,工作生活中也很少用到,新闻也不长提。换个思路,可以理解为 唆使?驱使?让?教导?其实我看都行(比如:活着 驱动 工作)。主要的目的是领域驱使你这样设计,领域教导你这样设计,但是要注意一点,这只是驱动你,而你不是必须照它的思想设计,思想是活的,设计也可以是活的。避免作茧自缚的情况。
有没有疑惑,我前面说道,为什么是传统行业多年磨练的剑谱?DDD最早是应用于传统行业的软件设计的思想,那么为什么要现在突然流行起来了呢?
A:某个大厂用过之后,这条鲶鱼开始疯狂扭动到处发文章,其他大厂迅速跟进
B:DDD有些思想跟现在的互联网公司模式相得益彰
C:别人用我也得用,别的公司有我的公司也得有,气氛架到这里了,就跟抢菜一样
D:钝角
改老代码犹如盘丝洞修电表,弯弯绕绕攀附在主体逻辑上,以至于很难看清这个接口是要干嘛,通过接口名能掐指算出个大概。看代码只能挠头,有些逻辑看着如同废话,删掉就出现线上问题。改老接口如履薄冰,谁都愿意写新接口。这可能也是领域驱动设计流行起来的原因。这里要说领域驱动设计有诸多思想可以借鉴,往后更新介绍给大家。如果你也遇到了这个情况,领域驱动设计挺合适。
领域驱动设计不是每个公司都适用,或者说不是每个部门都适用,它是用来解决复杂的业务逻辑的。核心要点在于业务复杂,如果你只是简单的增删改查那确实没必要搞领域驱动设计,只会劳民伤财。
如果你困惑,当前做的可能不复杂,日后可能复杂,到底应不应该用?那么我告诉你,用,就在你们公司用!这是一个锻炼的机会,哪怕你最后得到的是当前业务不适用,也是宝贵的经验。这里要注意下时间成本及上峰的态度,如果有时间赶不及就不要考虑了。领导不懂不理解也是空谈。边思考边做是很费时间的,可能写一天又得改一天,最后任何业务的功能都没有实现。最后赶进度就跑脱缰了。所以要有这个耐心和决心。领域驱动设计的使用也不会减少你的bug数,可能自己设计的模型不是很理想,相对来说还不如不用DDD,都是很有可能的。就跟关公能耍大刀,你耍大刀就闪腰一样。领域驱动设计的收益在于日后的维护成本,关键在于做好领域驱动设计在你的项目中,而不是简简单单的用了。这点要特别注意。这都是个学习的过程,缝缝补补摸索着就有了自己的门路,不灰心,大家一起努力。
今天先写到这里,byebye
原文:https://juejin.cn/post/7099353694101045279