前言

在一些日常开发中,我们经常需要阅读开发文档,对接第三方服务的接口,其中一些接口的请求实体或返回实体可能比较复杂,字段比较多,若是手动去复制创建实体属性,会很麻烦。比如下面这种情况:
日常开发技巧(一)接口对接快速定义实体(excel辅助编程)-小白菜博客
复制粘贴粘贴也要好几分钟(包括备注),主要是大量的重复的操作很烦,尤其是还有一定逻辑性的情况。
你可能想,一个接口而已,就算复制粘贴又咋样,但实际上多数的对接工作都不太可能只需要接一个接口,尤其是对接平台的时候,十几二十个接口,涉及到的实体更多,一个个复制花的时间可能是比写业务代码的时间长很多,挺浪费时间的(节约点时间,多摸摸鱼不舒服吗

解决方案

一些开发者为了解决这种情况,可能会自己写一个小工具,用来提取网页或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套件的情况,很轻松实现代码模板的操作,且非常容易扩展