这里不讨论详细设计,只从项目开发角度考虑,关注点为开发效率和稳健性。

问题

APP 使用中最不可容忍的莫过于闪退问题,而许多 crash 源于网络请求的返回值格式非法。

目前我们的接口开发和使用存在几个问题:

  1. 无文档规范
  2. 参数约束不足
  3. 客户端缺少必要的判断

无文档规范会衍生如下问题:

  1. 服务端接口开发没有明确指导,可能会导致返回值非法,引发不可预知的一些错误
  2. 客户端开发人员可能需要等待服务端接口开发完毕才能进行开发,而后需要反复对接,因此效率低下
  3. 客户端开发人员和服务端开发人员对接过程中难免会有疏漏,因此效率继续低下
  4. 客户端缺少必要的判断,一方面原因是开发人员的不良习惯,另一方面也是因为没有明确的接口规范文档,增加了进行判断的难度和工作量

一些想法

稳健性

从稳健性的角度考虑,「约束」自然是一大关键字,客户端、服务端都应该作相应的约束和判断,以提高容错性,避免某一方异常直接导致crash。约束主要体现在参数和返回值的判断以及相应限制。

客户端方面:我建议对每个不同的接口都实现一个独立的 Request 类、每个类对请求的参数强制约束,非法则直接进入异常处理不再请求;Request 类中的返回数据,进行必要的合法判断,然后再将回调传递给 Controller 层。

效率

而从效率上考虑,对开发流程我有个简单的想法:

  1. 先确定接口设计,包括(协议、接口名、传参方法、参数、返回值格式等),要有明确的文档;此前我和同事用 Google Docs 进行效率挺高,当前在不符合国情的情况下,可以考虑搭建简单的网站(公网、局域网视需求而定),去保存/展示相关文档,以实现协作;这件事情由前台和客户端的同学共同确认,敲定之后不轻易修改。
  2. 明确接口设计之后,前台/客户端可以实现并行开发,保证各自代码的正确性,也可以避免一些多余的沟通成本。
  3. 双方开发完毕之后,再进行联调。