新增API时的开发规范
感谢您对Layotto的支持!
本文档描述了如何设计并实现新的Layotto API。Layotto用Go语言编写,如果您对Go语言不熟悉可以看下Go教程 。
在开发新API的时候,可以参考已有的其他API的代码、文档,这会让开发简单很多。
Q: 为啥要制定该规范?
A: 目前缺少使用文档,用户不好用,例如:
代码缺少注释,感兴趣的贡献者看不懂,例如 https://github.com/mosn/layotto/issues/112
旧文档和注释补起来太慢,希望今后开发的新功能有这些。
Q: 遵循规范太麻烦了,会不会让想贡献代码的同学望而却步?
A: 本规范只限制“新增Layotto API的pr需要有哪些东西”(比如新设计一个分布式自增id API) ,其他pr比如新开发一个组件、新开发一个sdk都不需要遵循本规范,没这么复杂,足够自由
太长不看
开发前先提案,提案要详细
开发时要写4个给用户看的文档
- Quick start
- 使用文档
- API通用配置
- 组件配置
不用写设计文档,但是proto API和组件API要写详细注释,注释 as doc
新增API的pr要两个人code review,后续有机器人了可以一个人cr;其他pr随意
一、向社区发布API提案,经过充分讨论
1.1. 发布详细的提案
1.1.1. 为什么提案要详细
如果提案粒度太粗,其他人评审时可能没啥好评的,发现不了问题;
评审的目的是集思广益,大家一起帮忙分析当前的设计存在的不足,尽早暴露问题,免得以后返工。
1.1.2. 提案的内容
提案需要包含以下内容:
- 需求分析
- 为什么要做这个API
- 定义需求的边界,哪些feature支持,哪些不支持
- 市面上产品调研
- grpc/http API设计
- 组件API设计
- 解释你的设计
一个优秀的提案示例:https://github.com/dapr/dapr/issues/2988
1.2. 提案评审
简单的API发出来后大家文字讨论即可;
重要或复杂的API设计可以组织社区会议进行评审。
二、开发
2.1. 代码规范
2.2. 测试规范
- 有单元测试
- 有client demo,可以拿来做演示、当集成测试
2.3. 文档规范
原则:需要写给用户看的文档;至于给开发者看的设计文档,因为时间长了后可能过期、和代码不一致,可以不写,通过贴proposal issue的链接、在代码里写注释来解释设计。
2.3.1. Quick start
需要有:
- 这API是干嘛的
- 这个quickstart是干嘛的,想实现啥效果,最好有个图解释下
- 操作步骤
正例:Dapr pub-sub quickstart 在操作之前贴图解释下要做什么事情
反例:文档只写了操作步骤1234,用户看不懂操作这些想干啥
2.3.2. 使用文档
文档路径在"用户手册--接口文档"下,例如 State API的见 https://mosn.io/layotto/docs/api_reference/state/reference
调研发现Dapr的使用文档较多,比如光State API就有:
https://docs.dapr.io/developing-applications/building-blocks/state-management/
https://docs.dapr.io/reference/api/state_api/https://docs.dapr.io/operations/components/setup-state-store/
https://docs.dapr.io/reference/components-reference/supported-state-stores/
我们处于项目早期,可以轻一些
需要有: