前言
在一些日常开发中,我们经常需要阅读开发文档,对接第三方服务的接口,其中一些接口的请求实体或返回实体可能比较复杂,字段比较多,若是手动去复制创建实体属性,会很麻烦。比如下面这种情况:
复制粘贴粘贴也要好几分钟(包括备注),主要是大量的重复的操作很烦,尤其是还有一定逻辑性的情况。
你可能想,一个接口而已,就算复制粘贴又咋样,但实际上多数的对接工作都不太可能只需要接一个接口,尤其是对接平台的时候,十几二十个接口,涉及到的实体更多,一个个复制花的时间可能是比写业务代码的时间长很多,挺浪费时间的(节约点时间,多摸摸鱼不舒服吗)
解决方案
一些开发者为了解决这种情况,可能会自己写一个小工具,用来提取网页或apiDoc接口数据,对于一些标准的文档来说,这样还行,但若是文档完全不标准,写的人也不专业,就很恼火,花时间迭代这种小工具很大程度上是做无用功。
针对这个问题,有一个大家都有的工具可以很方便解决,那就是excel(微软、金山或者其他类似的都行,哪怕是语雀这种在线表格),你可能觉得很低级,都程序员了,还用excel辅助开发,不嫌low?但事实是,很多程序员都用不好excel,甚至停留在非常初级的阶段,平时做个报表都丑得很,所以他们才会觉得低级,当然,重点不在此,本文仅说明,如何使用excel公式进行批量字段提取。
本文中用到的公式
序号 | 公式名 | 中文描述 | 备注 |
---|---|---|---|
1 | UPPER(文本) | 将指定字符串中的字母转换为大写。 | |
2 | LEFT(字符串,字符数) | 返回从指定字符串开头提取的子串。 | |
3 | RIGHT(字符串,字符数) | 返回从指定字符串尾部提取的子串。 | |
4 | LEN(文本) | 返回给定字符亲的长度。 | |
5 | CHAR(字符编码) | 按照当前Unicode编码表,将数字转换为对应的字符。 | |
6 | IF(逻辑表达式,为TRUE时的返回值,为FAISE时的返回值) | 当逻辑表达式的值为TRUE时返回一个值,而当其为FALSE时返回另一个值。 |
公式模板(示例)
F6首字母转大写的公式:UPPER(LEFT(A2))&RIGHT(A2,LEN(A2)-1)
G7字段生成的公式:"/// <summary>"&CHAR(10)&"/// "&IF(E2="是",C2&",必填",C2)&CHAR(10)&"/// </summary>"&CHAR(10)&D2&" "&B2&" "&UPPER(LEFT(A2))&RIGHT(A2,LEN(A2)-1)&"{get; set;}"
说明:在一些表格中,回车换行可以直接“回车换行”就能实现,可以不用CHAR公式转换,但考虑兼容性,尽量使用CHAR替换回车、换行、制表符等不可见字符
实现的效果(示例)
属性名 | 属性类型 | 属性注释 | 属性可见性 | 是否必填 | 属性名首字母大写 | 字段生成 |
---|---|---|---|---|---|---|
sourceId | String | 来源数据id,外部系统跟踪数据用 | public | 是 | SourceId | /// <summary> /// 来源数据id,外部系统跟踪数据用,必填 /// </summary> public String SourceId |
serialNo | String | 设备物理编号 | public | 是 | SerialNo | /// <summary> /// 设备物理编号,必填 /// </summary> public String SerialNo |
recordTime | String | 采集时间(yyyy-MM-dd HH:mm:ss) | public | 是 | RecordTime | /// <summary> /// 采集时间(yyyy-MM-dd HH:mm:ss),必填 /// </summary> public String RecordTime{get; set;}``` |
temperature | Double | 温度 | public | 否 | Temperature | /// <summary> /// 温度 /// </summary> public Double Temperature |
humidity | Double | 湿度 | public | 否 | Humidity | /// <summary> /// 湿度 /// </summary> public Double Humidity |
pm2p5 | Double | PM2.5 | public | 是 | Pm2p5 | /// <summary> /// PM2.5,必填 /// </summary> public Double Pm2p5 |
pm10 | Double | PM10 | public | 是 | Pm10 | /// <summary> /// PM10,必填 /// </summary> public Double Pm10 |
noise | Double | 噪声 | public | 是 | Noise | /// <summary> /// 噪声,必填 /// </summary> public Double Noise |
windSpeed | Double | 风速 | public | 否 | WindSpeed | /// <summary> /// 风速 /// </summary> public Double WindSpeed |
windDirection | Double | 风向 | public | 否 | WindDirection | /// <summary> /// 风向 /// </summary> public Double WindDirection |
结语
用excel协助编程这种行为只是小技巧,本质上只是使用开放的预置脚本进行快速编程,实现基础的文本转换操作,并不高级,但简单有效,易扩展,类似的行为,可以只在使用office套件的情况,很轻松实现代码模板的操作,且非常容易扩展