Design review 的重要性

作者:程序员罗尼 | 发布:2020-11-20 | 原文:https://mp.weixin.qq.com/s/grKjNEzvjNS-QbHMPchhMg


软件工程有很多好的实践,但是由于种种原因,能坚持下来的不多,Design Review 可能就是其中之一,但是我最近越来越体验到 Design Review 的重要性,还是觉得应该把 Design Review 作为软件开发过程中必不可少的一环,有这种想法的原因是源于自己两次被坑的经历,一次是自己的设计没有经过其他人的 Review,导致了问题,另一次就是被其他人的设计给坑了一次,吃一堑长一智,之后我自己做的每个改动都会找人 Review 一下
无利不起早,一个好的实践肯定是可以给大家带来收益的,下面就说说 Design Review 有哪些好处
第一、减少故障
对于重要的系统,稳定性比任何事情都重要,任何一次故障都可能带来不小的损失,所以即使在多次 Design Review 中只发现一次潜在的故障,做这样的努力都是值得的
另外由于软件的复杂性,几乎没有一个人懂得系统的全部细节,更不用说还可能有好多隐藏的坑,基于这样的事实,在 Review 的时候邀请别人参与,就多了个脑子,多了层保障,不论其他人的技术经验还是业务经验都可以作为你的助力
另外,友情提示,千万不要过于相信自己的能力,尤其在身边有更多有经验的人的时候,俗话说的好,天塌下来,有个子高的顶着
第二、促进团队内知识分享
团队内的人员流动是不可避免的,如果一个知识只在一个人的脑子里,这个人离职了,相关知识很可能就再也找不到了,剩下的人由于缺少知识,当相关地方出问题需要解决,或者由于业务需要进行改动的时候,大家需要花费更多的努力去了解和学习,有时甚至无法得知原始用意到底是什么了
如果每次修改都进行 Review,就可以防止出现知识孤岛,避免由于人员流动产生知识的缺失
当然,这个也可以通过文档化解决,但是还有一个事实,就是文档经常过时
第三、提升设计能力
一个设计做出之后,在设计者自己的认知范围内大概都会认为已经比较完美了,但是由于自己能力和知识的限制,可能还有提升空间,在 Review 的时候其他人可能发现相关的问题并提出建议
在别人提出建议之后,一定要虚心接受,如果对自己有帮助,要表示感谢,并反思自己为什么没想到,找到差距,努力弥补,提升自己
三人行必有我师,我们不应该放过任何一个能提升自己的机会
以上就是 Design Review 三个比较明显益处
说完了为什么应该做,下面就说说应该怎么做

首先,要确定改动的范围,然后根据改动的范围确定参加 Review 的人员范围
架构或模块级的改动,例如

  • 对外提供的接口改动
  • 与其他系统发生交互的方式发生改变
  • 项目本身的架构需要调整

这种就需要和整个 Team 进行 Review
类级别的改动,这种可以找最熟悉相关业务的人和技术骨干来 Review 一下
更小的改动,可能找个人聊一下,或者和 Code Review 一起做也可以
其次,应该 Review 哪些方面
这个应该是一个逐渐完善的过程,并形成一个 checklist,每次都按照相关的项进行讨论,也就是说,设计者要准备好相关的文档

一般可以考虑如下方面
业务层面

  • 需求的背景
  • 要解决什么问题
  • 需要达到哪些目标
  • 有没有 deadline
  • 涉及哪些团队

技术层面

  • 有没有外部依赖
  • 接口定义是怎么样的
  • 新老版本兼容性
  • 需要改动哪些模块
  • 能不能借此机会对原有系统进行一些优化
  • 类设计是否遵循了 SOLID 原则
  • 对当前系统的性能是否有影响
  • AB 试验的策略是怎样的
  • 部署方案
  • 回滚策略
  • 监控报警

这个列表应该根据具体情况不断演进,逐步完善

OK,关于 Design Review 就先说这么多吧
软件开发,任重道远,砥砺前行,乐趣无穷

END