[答疑]考虑复用,尺度应该怎样把握
DDD领域驱动设计批评文集
做强化自测题获得“软件方法建模师”称号
《软件方法》各章合集
第五元素 2025-10-21 7:44
潘老师,关于上图有一个问题:设计要把项目当产品做,意思是要考虑复用,降低成本。那么,当落实到具体项目时,这个“复用”要做到什么程度?
比如:我可以按照某某规范做,在公司所有产品中复用它,这样所需要花的时间就会很多;还是在优先完成当前项目的前提下(或者说,满足需求的前提下),尽可能的考虑复用?
UMLChina潘加宇
复用的需要,从第二个需求就开始了。
实际上做项目、做产品本质上是一样的,都是做需求的时候要思考得具体,做设计的时候思考得抽象。
那张图上这样说是为了纠偏。
说“把产品当项目做”,就是堵住某些人做需求的时候找偷懒借口说“我这是产品,没有具体客户”;
说“把项目当产品做”,就是堵住某些人做设计的时候找偷懒借口说“我这是小项目,不打算做成产品线”;
这样的说法虽然容易记住,但容易被误读。2025版本已经换了更严谨(可能也更乏味的)表述方式。
第五元素
我想问的应该不仅是这个问题,我更想问的是:复用需要做到的程度或者是权衡。我再描述一下:
我可以按照某某规范做,在公司所有产品中甚至是全国所有类似产品都可以复用它,但这样所需要花的时间就会很多,可能投入的精力就会不花在解决当前项目所面临的问题上;
还是在优先完成当前项目的前提下(或者说,满足需求的前提下),尽可能的考虑复用?
有点类似于以前有个问题:病人有各种问题,是优先治疗牙疼还是优先治疗癌症。
UMLChina潘加宇
首先要把“按照某某规范做”这句话删掉,否则第一个选项肯定是不能选,这容易让人觉得幼稚,误解成以为有一个规范就能搞定,看我乐不乐意搞而已。
删掉之后,就看开发组织负责人的意思了,也许他想要的就是选项1,那么选项1就成了一个项目。如果组织负责人没有安排你做选项1,对你自己负责的项目来说,当然选择选项2。
至于开发组织负责人怎么决定,哪些因素对他影响最大,那就不知道了。
这和开发组织负责人决定对所有产品更换技术栈是一样的,只不过一个是设计工作流,一个是分析工作流。设计工作流现在有AI,已经不难了,分析工作流这个还是更难。
如果确实掌握了某个严谨的分析方法学(例如《软件方法》第8章),会知道,做分析时,如实地体现领域知识,其中可以腾挪的空间并不大。
就像第1章里说的:面对一个棋局,下一步怎么走?在业余棋手看来到处都是正确答案,在职业棋手眼里,会很快排除各种糟糕的选项,剩下值得讨论的选项只有两三个,无非是再讨论其中哪一个更好一点。
业余选手,往往出来的结果是这两三个之外的五花八门的糟糕选项,都没有操这份心的资格。
所以还是领域驱动设计热闹,人人创新,个个开宗立派,五花八门。
**********
另外,复用是一个过程,不是说我想复用(假设水平也够),就乓的一声从天上掉下来了。