如何做 Feature Design
优秀的程序猿用80%的时间思考,20%的时间编码
在设计一个功能的时候,我们会先花比较多的时间用文字+图片的形式把如何做描述清楚,并且把系统中的相关功能点都考虑清楚,这就是程序猿常说的功能设计 / Feature Design
以下是我目前常用的模板,仅供参考,其实Feature Design本身并没有一定的格式要求,可以根据实际业务场景调整
Introduction / 介绍
- 背景介绍,简单说下这个功能是用来做什么的,用户场景是如何如何之类的,用来建立整个文档的上下文
Overall Architecture / 总体架构
- 所谓一图胜千言,这个部分一般会放上一张架构图,把各个主要模块梳理清楚,相互之间的调用关系一目了然
- 架构图不能局限于功能本身,要考虑到这个功能模块和整个系统的关系,涉及到多少其他模块,如何交互,有什么影响,都要考虑进去
Technical Details / 技术细节
- 这部分用文字来描述在图中不容易表述清楚的一些技术细节,可多可少,把需要解释清楚的点讲清楚就可以
Sequence Diagram / 时序图
- 用时序图清楚的表明业务逻辑,不用废话,直接上图,还是那句话:一图胜千言
Database Schema / 数据库表结构
- 如果涉及到数据库的改动,在这里写明数据库的结构定义
UI/UX Design / 界面交互设计
- 如果有界面设计,交互设计的话,放在这个部分
Dependency Analysis / 依赖分析
- 这是对于总体架构中对于系统其他模块依赖的详细分析,一般可以整理一个表格,清晰明了
Security Enforcements / 安全须知
- 如果有安全相关的内容,在这里扩展
Telemetry and Metrics Details / 监控指标
- 对于该功能的运转情况,提供可以量化的关键指标,并说明测量的方法
Performance Analysis and Capacity Guidance / 性能分析
- 涉及到比较重量级的功能,一般都需要做性能测试,并且给出关键指标的官方推荐值
Disaster Recovery and High Availability Strategy / 容灾与高可用策略
- 程序永远无法保证100%工作正常,在异常发生时,我们需要有应急策略,保证 1. 用户数据的完整性 2. 服务尽量的高可用
Testing Guidance / 测试指南
- 关于如何测试该功能的一些细节
Other Regulations and Compliance / 其他内容
- 其他的无法被包含在以上各项中的内容
当完成以上这些部分的梳理之后,接下来的编码步骤反而是很简单的,只需要花比较少的时间,而且这样基本上杜绝了返工的可能
反过来如果不预先统筹考虑,上来就开干,边写边想,往往会发现顾此失彼,很多地方考虑不周,到最后可能还要推倒重来,反而浪费了很多时间
所谓的“慢即是快”讲的就是这个道理