研发前花费大量精力做详细设计值得吗?

查看 114|回复 9
作者:VeryZero   
最近一直在思考这个问题,希望跟大家讨论一下。
起因是公司有个惯例,研发前需要做详细设计并且评审。设计包含 REST 接口和参数、模型和字段、行为模型调用层次、时序图、数据库表结构设计,大概就是类似 UML 那一套。部分设计还需要包含各种条件分支、异常处理的逻辑。达成目标就其他人拿到这个设计文档后不需要太多沟通就可以完成开发。
每次做新需求,这个阶段是最痛苦的,我个人非常抵触。我倒不是抵触研发前设计这个步骤,我是抵触性价比不高的过度设计。
我们做设计的目的是为了对齐前后端、各服务之间的想法,防止出现方向性错误。所以我认为 REST 接口和表结构是必须要提前设计的,一方面是因为有了 REST 接口前端才可以提前介入开发,有了表结构大概能知道设计者对需求理解有没有大的偏差,两个结合起来大概就能知道这个需求如何实现了,另一方面,因为这两块重构代价太高了。如果是简单需求变更,这两样个人认为足够了。针对复杂场景可以适当增加时序图,这样评审的时候可以集思广益,帮忙查漏补缺。我最抵触的是类图,这也是工作量最大的一块,我们的要求是如果 DTO 这种,要列出所有字段和类型,如果是 serivce 这种要列出方法级的调用链,比如最上层是 controller ,然后往下调用 service ,再往下 repository ,再往下 mapper 这种。其实就是把项目里的类名复制到画板里,用箭头连起来。这些花了大力气的类图评审的时候大概率就是讨论下字段命名是否规范、类型的定义是否正确、层间调用是否合理等代码层面有没有遵守规范,这种层面的设计和讨论,认为完全没有必要,特别是工期特别紧的时候。因为评审与否对代码质量影响不是决定性的,即使过了评审最终交付的代码也会跟设计有差异,不如把设计和评审的时间用于代码 review ,而且这部分代码都是内部逻辑,随时可以重构,代价也不高。
另外一方面,我们是自研产品,代码架构已经成型,新需求就是给产品添砖加瓦,而且做设计和写代码的大概率是同一个人。然后就会出现一些有意思的情况,有人会先写代码后做设计、也有人画图画了 2 天,代码半天写完了。设计变成了应付交差,为了设计而设计。
不知道你们是如何看待设计这件事的,欢迎参与讨论。
希望大家讨论时聚焦具体领域和场景,本次特指:后端开发,自研产品。其他领域的侧重点和情况可能不一样,观点不具有普适性。
cybort   
先写代码再写设计也有意义,方便后续复盘和检查。
shizhibuyu2023   
「把项目里的类名复制到画板里,用箭头连起来」。觉得「类图」工作量大就搞点提效的事呗,尝试写点脚本来搞呗,或者搞个工具画完类图直接导出代码(我估计有现成的)
从前端的角度来看非常值得,后端时间拉长,那前端延期的可能性就减小,也有更多时间摸鱼🤡
godpeo   
矫枉过正,有些东西是在开发的过程中 发现问题后 需要不停修改的
VeryZero
OP
  
@shizhibuyu2023
前端也要设计 😄
shizhibuyu2023   
@VeryZero #4 没事,那点设计基本等于摸鱼,真要搞也有很多自动化工具和 AI 工具可以借力,不用动多少脑子,边听小说边搞都能搞定😎
VeryZero
OP
  
@godpeo 这也是这么认为的,设计评审只是保证了大方向上没有偏差,不会出现开发完成后推倒重来的尴尬,但是具体代码实现上,只有真正开发了才能暴露出一些问题。
而规则制定者想让我们把在开发时才能遇到的问题在设计阶段就提前想到,这也是设计比较耗费精力的原因,很大一部分时间就是盯着天花板想有没有什么东西漏了。实际这些东西到了开发阶段都是水到渠成的事儿。
hefish   
还是看领头的人。 快速迭代出可用产品,根据市场情况继续迭代,挺好。 精细化设计,然后仔细开发,减少回退,也没错。 看人,看情况。
Hyschtaxjh   
听起来很日式
lidongyooo   
如果楼主不是管理层,设计就设计呗。能多点时间摸鱼,也能减少工作差错的可能性,何乐而不为。况且这种形式的工作做多了,何尝不是工作技能的提升。总有些时候是会要用到这些东西的。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部