在上班无聊的摸鱼中突然发现了InfoQ写作社区与火山引擎社区的有奖征文,对于我来说这肯定是不能缺席,嘿嘿,毕竟可是有奖品。
从 2021年 github copilot 的推出,这款产品是由 OpenAi 团队开发的人工智能助手开始,AI 已经慢慢影响着我的编程习惯。常用功能有:根据代码的上下文自动补全代码、自动生成函数或方法的注释(很实用)、问题解决建议(鸡肋)、生成单元测试(超级实用,应该都能理解写单元测试的痛苦)等等很多功能,很不幸,2022年,copilot 宣布不太免费,当时我并不是深度依赖这款工具,所以我之后几年并没有再使用过它。
2023 可以称为 AI 爆发元年,openAI 团队推出了chatGPT 3.5,惊艳了全球,对市面上其他AI产品来说可以是降维打击,2023 下半年,我入职了一家新公司,这家公司自研了一个AI 的插件,可以帮助自动补全代码、生成注释、生成单测、解释代码等。
自动化补全代码
- 单行代码补全 可以根据代码上下文,为我输入的内容给出补全提示,比如说我输入了一个函数名称,插件会给出代码补全提示,可以按 tab 接收补全提示;
- 多行代码补全 还可以输入注释文本来完成多行代码补全,比如说我输入了 “判断一个字符串是否为英文” 然后按下回车,插件会自动为注释内容生成多行代码 或者 一个方法,然后按 Tab 键 接受代码提示;
生成注释
这个功能是我常用的,比如可以在代码中选中需要添加注释的代码,然后选择添加注释,就会在所选代码上自动生成注释
解释代码
相信大家去阅读别的童鞋代码的时候会很痛苦,尤其是面对一些陈年屎山的时候,会让人抓狂,现在可以让AI工具帮助我们去解释这段代码, 比如这段 快速排序 的代码(当然这段代码我也是让 AI 帮我写的):
public class QuickSort {
public static void quickSort(int[] arr, int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
private static int partition(int[] arr, int low, int high) {
int pivot = arr[high];
int i = (low - 1); // Index of smaller element
for (int j = low; j < high; j++) {
if (arr[j] < pivot) {
i++;
// Swap arr[i] and arr[j]
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
int temp = arr[i + 1];
arr[i + 1] = arr[high];
arr[high] = temp;
return i + 1;
}
public static void main(String[] args) {
int[] arr = {10, 7, 8, 9, 1, 5};
int n = arr.length;
quickSort(arr, 0, n - 1);
System.out.println("Sorted array: ");
for (int i = 0; i < n; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
}
我会复制这段代码去让AI帮我解释这段代码的含义,如下:
之后面对童鞋们写的屎山的时候,再也不用抓狂了,不想看的代码可以直接扔给 AI 帮你阅读,节省时间且心情也会很愉快。
生成单元测试
这个功能呢是我使用频率最高的了,谁懂测试覆盖率 100% 的痛苦呀,之前写单元测试的时间要大于我写功能代码时间的两倍了,真的是最痛苦的一件事情,现在我会选中要我要写单元测试的方法或函数,让AI帮我写单元测试,当然,有时生成的单元测试达不到100%的,毕竟AI也只是辅助工作,又不是替代我工作。
工作量噌噌的往下减,排期还是之前的排期,摸鱼时间蹭噌的往上涨。
生成名称
写代码最困难的事莫过于起名字了,什么类名、方法名、函数名、字段名,让人头皮发麻,尤其是英语不好的我,往往想了好久的名称是无法代表这个含义的,这时,我想到了,可以让AI帮助我生成名字,哈哈,果然,AI是要比我想出来的名字要好的,AI完胜我。
用了AI后,老婆再也不用担心我秃头了
今年,我已经是AI的重度使用者,帮助我减轻了很多工作量,快速完成工作,今年,AI大模型的井喷出现,GPT4.0在一些领域已经可以媲美人类专家了,当然,有时 AI 总是莫名的抽风。不过我认为,AI在之后肯定会替代很多重复无意义的劳动的。
本文首发于 InfoQ 写作平台:https://xie.infoq.cn/article/2a2a0b6612dda0a2264c716e5