程序是为了提升生活中各类工作的效率。那编码效率如何提升呢?
- 优秀的架构
- 封装好的各类功能/UI组件
- 功能丰富的IDE
- 基于IDE的各种插件
即使有以上各类帮助,但依然有枯燥重复的代码编写工作。这里以安卓客户端「接口代码编写」为例讨论下解决思路
接口代码编写流程
- 查看服务端文档
- 根据文档编写实体类
- 封装接口信息(url、request、response)
- 调用接口,让数据展示到UI等
4的逻辑需要灵活处理,重点是解决2、3步骤的重复枯燥编码
目标接口和代码示例
1
2
3
4
5
6
/**
* 业代问题详情接口
*/
@GET("question/feedback/getQuestionDetail")
Observable<BaseResponse<QuestionFeedback>> getQuestionDetail(
@Query("questionUid") String questionUid);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class QuestionFeedback implements Serializable {
// 审核人
private String auditName;
// 审核人工号
private String auditSiebleUid;
// 是否有共性 0:否,1:是
private int baseFlag;
// 紧急程度,0:紧急,1:一般
private int clamantLevel;
// 操作明细
private ArrayList<QuestionFeedbackDetail> detailDtoList;
// 问题反馈时长
private String feedbackDuration;
// 重要程度,0:Hot 1:Warm 2:Cold
private int importantLevel;
// 问题分类,可用值:QU_CA_001,QU_CA_002,QU_CA_003,QU_CA_004,QU_CA_005,QU_CA_006,QU_CA_007
private String questionCategory;
// 问题描述
private String questionDesc;
// 照片
private String questionPhoto;
// 问题状态,可用值:IN_AUDIT,WAIT_EDIT,WAIT_PROCESS,FEEDBACK,UPGRADE,DONE,REVOKE,DISCARD
private String questionStatus;
// 更多字段 ...
}
问题
- 接口query or path字段过多时,需要手动写,且必须挨个复制,否则错一个字母会出问题。
- 实体类字段过多时,需要挨个写。
- 字段意义不明时,还需要额外给字段标注释。
解决方案
AndroidStudio 的 GsonFormat 插件
缺点:必须先拿到返回的json字符串,且生成的实体类没有注释。
自动生成代码脚本
基础思路:
- 获取接口文档信息并解析
- 根据已获取的接口信息,自动拼接成所需代码,或自动生成代码文件
- 复制自动生成的代码或文件到项目中
拓展
- 可以批量处理接口文档,相同实体类还可以去重处理
- 生成代码的方式不限,java/python脚本,或直接编写IDE插件,做成网页在线版工具
- 解析接口信息后,生成Android/iOS/Web代码都可以
- 除了接口文档,其它任何重复代码也都可以类似思路解决