GitHub Copilot 帮我开发了一个处理 CSV 文件的 Java 应用程序。虽然不是什么很困难的任务,但在 Java 中总是感觉比在 Python 或 Node 中更难。由于这次有了 Copilot 的加持,只需要输入两个简单的命令,选择合适的工具建议点击“接受”就搞定了。
本文的 GitHub 仓库:
https://github.com/lucasjellema/my-codepilot-explorations
两个命令:
- 加载 CSV 文件并将数据存储在映射列表中的类
- 打印列名
下面开始介绍具体的步骤。
开始使用 Copilot
首先,要设置好 Copilot。在安装 Copilot 的 VS Code 扩展之后,按照说明文档注册并使用 Copilot(可免费试用 60 天)。我已经在 VS Code 中完成了 Copilot 的前几步,测试它是否可以成为我编程助手,一个真正意义上的“结对编程小伙伴”。
基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
组装 Java 应用程序以处理 CSV 数据文件
第一个试验是创建一个简单的 Java 应用程序,读取一个 CSV 文件并将数据转换为可以轻松处理的数据结构。感觉上似乎比 Node 或 Python 程序更复杂的任务。
要创建处理 CSV 文件的 Java 类
- 在目录 javapilot 中创建名为 DataProcessor.java 的文件
- 输入 // class for loading a csv file and storing data in a list of maps
- 按下 Ctrl+Enter
从打开的 GitHub Copilot 选项中选择列表中的第一个解决方案。将光标定位在粘贴的代码末尾,按 Ctrl+Enter 获取如何继续的建议。
接受第一个建议:添加 getData 和 getColumnNames 方法以及 main 方法。
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
创建带有 Country 数据的示例 CSV 文件
按照下面步骤创建包含 Country 数据的 CSV 文件:
- 创建名为 data.csv 的文件
- 输入 // records for countries with comma separated values for country name, language, capital and population
- 按下 Ctrl+Enter
接受第一个解决方案。
需要进行一些后处理,以删除 // Example: ” and ” + newline
接受 Copilot 的建议,使用有列名的第一行。删除原始注释。
运行 Java 类。输出显示 Java 应用程序处理的 CSV 中的 Country 数据。
为了实现输出列名,需要执行以下步骤:
- 在 main 方法的 for 循环之前添加注释 // print names of columns
- 按 Ctrl+Enter
- 接受第一个解决方案
再次运行 Java 类。现在列名也加进去了。
结论
在创建一个空的 Java 文件后,输入了以下两个建议:
// class for loading a csv file and storing data in a list of maps // print names of columns
然后使用 Ctrl+Enter 三次来获取应用程序的代码片段,就可以成功地编写了一个 Java 程序,实现了我想要的功能。虽然我现在并不是一位熟练的 Java 程序员,但如果我自己完成这个任务的话,时间会更长(即使只是因为我显然在输入任何文本或代码时都会出现很多错别字),而且可能会导致更多的挫折感。
还需要在一个空的 csv 文件中添加一条附加的注释,以生成一个包含 Country 记录的示例 csv 文件:
// records for countries with comma separated values for country name, language, capital and population
在接受 Copilot 的提议之后,我需要对文件进行一些微调以便于使用。公平地说,Copilot 建议了一些来自 GitHub 的可用 CSV 文件。
注意:如果你执行的步骤和我一模一样,也可能会得到不同的结果。Copilot 在不断改进,给出的建议也会随着其演进以及使用环境(以及一些或许没有人完全理解的因素)而有所不同。
从 URL 下载 CSV 数据
让我们尝试创建一个 Java 应用程序,从 GitHub 获取其 CSV 文件,并执行与之前相似的处理。
- 创建一个名为 DataProcessor2.java 的空文件
- 添加注释 // class for downloading a csv file from GitHub and storing data in a list of maps
- 按下 Ctrl+Enter
- 从打开的 GitHub Copilot 选项卡中选择第三个解决方案
最终结果与之前的 DataProcessor 非常相似,有三个不同之处:
- 构造函数的输入参数称为 url。
- InputStreamReader 是由 URL 对象创建的。
- 构造函数传入的值应该是 URL 而不是文件位置。